javascript - JS 的间隔和延迟

标签 javascript jquery html css

我正在尝试构建一个 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/

相关文章:

javascript - Firefox中的Javascript播放声音

java - Android 应用中的 HTML/JS 应用

javascript - 悬停在图像上的效果

jquery - 使用 css/jQuery 在两个元素之间添加链接线

html - 如何通过表格上的图标保留文本(响应式设计)

javascript - if 语句的 Soy 模板语法

javascript - 复选框点击事件触发两次

JavaScript forEach() 方法在 Chrome 和 Firefox 中的工作方式不同

jquery - 为每个 <li> 添加不需要的间距

html - Live Server 扩展不会使用 WSL2 自动重新加载