【发布时间】:2017-09-09 15:38:02
【问题描述】:
我正在开发RGB 颜色选择器游戏。
游戏生成6颜色方块的随机网格,并从这6个颜色方块中选择一个随机RGB颜色,如果玩家从网格中选择正确选择的RGB颜色,所有6方块都变成这个颜色,他赢了这一轮,但如果他从颜色隐藏的网格中选择任何不正确的颜色。隐藏它的逻辑我只是将颜色设置为与背景颜色相同。
我添加到网格单击事件侦听器的每个正方形。我的问题是我希望此事件侦听器在游戏的每一轮中只工作 1 次,因此如果玩家选择错误的颜色,颜色方块将隐藏并且单击事件侦听器被禁用如果他点击了正确的颜色点击事件监听器应该被禁用,时间上也是一样的。
如果有其他隐藏错误选择的正方形颜色的好方法,请提及。
游戏界面如下:
这个问题的代码块:
var colors = generateRandomColors(6);
var squares = document.querySelectorAll(".square");
var pickedColor = pickColor();
var colorDisplay = document.getElementById("colorDisplay");
var messageDisplay = document.querySelector("#message");
var h1 = document.getElementsByTagName("h1")[0];
var resetBtn = document.getElementById("reset");
colorDisplay.textContent = pickedColor;
// add click listener to new colors button
resetBtn.addEventListener("click",function(){
reset();
});
for (var i = 0; i < squares.length; i++) {
// add intial colors to squares
squares[i].style.backgroundColor = colors[i];
// add click listeners to squares
squares[i].addEventListener("click",function(){
// grab color of clicked square
var clickedColor = this.style.backgroundColor;
// compare color to pickedColor
if(clickedColor === pickedColor){
changeColors(clickedColor);
h1.style.backgroundColor = clickedColor;
resetBtn.textContent = "Play Again";
messageDisplay.textContent = "Correct!";
}
else{
this.style.backgroundColor = "#232323";
messageDisplay.textContent = "Try Again!";
}
});
}
任何建议的帮助将不胜感激。
【问题讨论】:
-
问一个关于他们的代码的问题,实际上并没有显示出来
-
@MohammadOghli 尝试添加
squares[i].addEventListener("click",function(){ .... }, {once: true});,这将在您触发后删除监听器 (Reference) -
@MohammadOghli
squares[i].style.visibility = "hidden"会做吗? -
@MohammadOghli 很高兴为您提供帮助,这就是为什么我评论了提供您的代码的重要性 - 它使我们能够提供更详细和准确的帮助,而不是一般性建议 :)
标签: javascript dom event-listener disabled-input