我正在尝试构建一个 Simon says 游戏,现在我卡在了我想要点亮用户必须单击的按钮的部分。我用“for”来分析我存储序列的数组的每个部分,然后数组应该去每一轮并点亮按钮,就像这样;一直持续。但出于某种原因,“for”改变了同时传入数组的每个 div 的背景,即使我使用元素间隔来停止按钮。
这是我正在使用的代码笔:
https://codepen.io/argestis/pen/gLraBq?editors=0011
function litSequence() {
for (var i = 0; i < game.count.length; i++) {
if (game.count[i] === 1) {
game.blue.css("background-color", "cyan");
setTimeout(function() {
game.blue.css("background-color", "blue");
}, 1500);
} else if (game.count[i] === 2) {
game.red.css("background-color", "pink");
setTimeout(function() {
game.red.css("background-color", "red");
}, 1500);
} else if (game.count[i] === 3) {
game.green.css("background-color", " #4dff4d");
setTimeout(function() {
game.green.css("background-color", "green");
}, 1500);
} else if (game.count[i] === 4) {
game.yellow.css("background-color", "orange");
setTimeout(function() {
game.yellow.css("background-color", "yellow");
}, 1500);
}
}
};
最佳答案
setTimeout
不会停止您的逻辑。您可以将其视为创建逻辑操作的并行点。您的逻辑将继续运行,只有在该时间过去后,超时中的逻辑才会执行。由于 js 运行速度非常快,因此很可能是循环中的所有 setTimeout 触发都相对靠近在一起以同时出现。
关于javascript - JS 的间隔和延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40706749/