-2
A
回答
0
我建议使用DOM dataset节省挑选颜色的指数,而不是颜色本身。
var colors=["rgb(99,49,25)","rgb(115,152,170)","rgb(195,171,20)","rgb(55,49,35)","rgb(177,134,98)","rgb(247,100,160)"]
var squares = document.querySelectorAll(".square");
var colorDisplayed = document.querySelector("#colorDisplayed");
var pickedColor = 0;
colorDisplayed.innerText = colors[pickedColor]
var handler = function(e) {
var clickedColor = Number(e.target.dataset.colorIndex); // explicitly transform dataset colorIndex to Number
if (clickedColor === pickedColor) { // if don't want transforming, use `==' instead of `==='
alert("right");
} else {
alert("wrong");
}
}
for (var i = 0; i < squares.length; i++) {
squares[i].style.background = colors[i];
squares[i].dataset.colorIndex = i;
squares[i].addEventListener("click", handler)
}
.square {width: 100px;height: 100px;border: solid 1px black;float: left;}
<div id="colorDisplayed"></div>
<div><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>
另一种方法是使用封闭到我保存到它。
var colors=["rgb(99,49,25)","rgb(115,152,170)","rgb(195,171,20)","rgb(55,49,35)","rgb(177,134,98)","rgb(247,100,160)"]
var squares = document.querySelectorAll(".square");
var colorDisplayed = document.querySelector("#colorDisplayed");
var pickedColor = 0;
colorDisplayed.innerText = colors[pickedColor]
for (let i = 0; i < squares.length; i++) { // Notice keyword `let' here
squares[i].style.background = colors[i];
squares[i].dataset.colorIndex = i;
squares[i].addEventListener("click", function() {
if (i === pickedColor) { // since i is "letted", i is different each in each event listener function
alert("right");
} else {
alert("wrong");
}
})
}
.square {width: 100px;height: 100px;border: solid 1px black;float: left;}
<div id="colorDisplayed"></div>
<div><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>
0
其实这个问题是这样的代码:
squares[i].addEventListener("click" , function ...
从未添加的addEventListener一个循环中,因为当你点击,循环已经达到了结束!
我建议创建一个函数,并把它添加到您的.squares
元素onclick
,做你的逻辑在那里。
0
相关问题
- 1. Javascript不执行分支IF语句
- 2. java if语句不执行
- 3. PowerShell if语句不执行
- 4. Foreach不执行IF语句
- 5. Else子句(在if语句)不执行
- 6. Javascript - 执行if和else语句
- 7. IF语句不执行,但ELSE IF语句正常工作
- 8. 不执行到“if语句”的动作
- 9. if else语句执行
- 10. Java if语句未执行。
- 11. 无法执行if语句
- 12. 自动执行IF语句
- 13. 的Javascript不是if语句
- 14. VBScript For Loop不执行if语句?
- 15. SQL IF ELSE语句不执行
- 16. if-else语句在Java中不执行
- 17. Java计算器不执行if语句
- 18. If/Then语句不能正确执行
- 19. 返回函数if语句不执行
- 20. JavaScript,jQuery,XML - if语句不执行原因不明
- 21. JavaScript if语句
- 22. Javascript If语句
- 23. JavaScript的if语句
- 24. 其他语句不会在if语句中执行
- 25. 我的if语句执行两个if而不仅仅是1
- 26. 执行IF语句的两个分支
- 27. 执行if语句的频率如何?
- 28. IF语句的主体未执行(HttpURLConnection)
- 29. 计算执行if语句的次数
- 30. JavaScript if if语句变量
什么pickedColor和clickedColor的可能值。 请在这里发布代码..不要上传代码图片。 – Rahul
请勿张贴的代码图像,张贴实际的代码文本 –
你应该看看什么是'this.style.background'返回,并不是所有的浏览器返回相同类型的格式为'background' –