我想运行这段代码,除了if语句之外,一切似乎都在工作。即使存在匹配,但它仍不会显示代码中显示的正确答案,而是将代码显示在else语句中。破碎的“if”语句在JavaScript代码中...
var colors = [
"rgb(255,0,0)",
"rgb(255,255,0)",
"rgb(0,255,0)",
"rgb(0,255,255)",
"rgb(0,0,255)",
"rgb(255,0,255)"
]
var squares = document.querySelectorAll(".square");
var pickedColor = colors[3];
var colorDisplay = document.querySelector("#colorDisplay");
colorDisplay.textContent = pickedColor;
for (var i = 0; i < colors.length; i++) {
//add initial colors to squares
squares[i].style.background = colors[i];
//add event listener
squares[i].addEventListener("click", function() {
//get color of picked square
var clickedColor = this.style.background;
//compare to the pickedColor
console.log(clickedColor);
if (clickedColor === pickedColor) {
alert("COORREECCTT");
} else {
alert("WRROONGG!!");
}
});
}
body {
background-color: #232323;
}
.square {
width: 30%;
background-color: purple;
padding-bottom: 30%;
float: left;
margin: 1.66%;
}
#container {
max-width: 600px;
margin: 0 auto;
}
h1 {
color: #fff;
}
<body>
<h1>The Great <span id="colorDisplay">RGB</span> Color Game</h1>
<div id="container">
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
<div class="square"></div>
</div>
</body>
这就是为什么混合表示和数据通常是一个坏主意。更好的方法是将点击处理程序仅附加到正确的div而不是全部。 – JJJ
正如下面的答案表明你在做'rgb(0,255,255)'==='rgb(0,255,255)''。如果您在'clickedColor'控制台旁边添加了'pickedColor',可能是一个简单的捕获.log – nilobarp