javascript - 有延迟的循环代码

标签 javascript jquery html

我正在尝试创建一个简单的飙车动画。单击按钮后,汽车图像就会在页面上移动,直到每个图像到达特定位置。下面的代码适用于每次单击将汽车移动随机距离的单独单击,但我希望单击一次即可循环重复移动。我尝试将其放入 while 循环中引用 x 的值,但它不起作用。任何想法。

<html>
<head>
  <meta charset="utf-8">
  <title>Race Car</title>
</head>
<body>
  <input type="button" id="move" value="race time" onClick="race()" />
  <div id="car" style="position: absolute; top: 150px"><img src="car.png"></div>
  <script src="https://code.jquery.com/jquery-2.1.0.js"></script>
  <script>
    //Get car position coordinates
    x = $("#car").offset().left;
    y = $("#car").offset().top;

    //Move car across screen by resetting car position coordinates
    var race = function() {
      var delay = 1000;

      setTimeout(function() {
        $("#car").css({
          left: x += Math.floor(Math.random() * 50),
          top: y
        });
        x = $("#car").offset().left;
      }, delay);
    };
  </script>
</body>

</html>

最佳答案

您正在寻找setInterval .

setTimeout 在 x 毫秒后运行您的函数一次。

setInterval 每 x 毫秒运行一次函数。

请务必将间隔存储在您可以访问的变量中 (var time = setInterval(fn, ms)),然后在您想要停止间隔时清除它 (clearInterval(计时器))。

关于javascript - 有延迟的循环代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48118038/

相关文章:

javascript - 如果您未在同一浏览器上登录 Facebook,则不会显示 Facebook Like Box

jquery - 更改选项卡jquery的背景颜色

html - 连字符 : auto do not break pseudo words like ***************

html - React 样式矩形 div,如示例所示

html - 面板标题中的 Bootstrap 负边距不起作用

c# - Breeze 一对多删除 - 子实体 FK 设置为 0

javascript - 仅当我不先编辑字段内容时,我的 JavaScript 按钮才会运行

javascript - 在父元素上切换溢出属性时

jquery - 如何使用 JQuery pdfHtml5 将整个 DataTable 在 pdf 中居中

javascript - 在 asp.net-mvc 中引用特定于局部 View 的 javascript 的最佳做法是什么?