javascript动画不循环

标签 javascript jquery jquery-animate

我有一个轮盘游戏,如下所示:enter image description here

我希望它越走越慢,所以我有这个代码:

$(document).ready(function() {
  $("button").click(function() {
    var moveTime = Math.floor(Math.random() * 1000) + 2000
    var slowDown = 1000;
    while (moveTime > 0) {
      $("div").animate({
        left: slowDown + "px"
      });

      if (slowDown > 0) {
        slowDown--;
        moveTime = 0;
      }
      slowDown--;
      moveTime--;
    }
  });
});
div {
  position: absolute;
  float: left;
  margin: 0 0 0 -8400px;
  width: 10000px;
  height: 100px;
  background: repeating-linear-gradient(90deg, #DF0000, #DF0000 100px, #000000 100px, #000000 200px)
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Start Animation</button>
<div></div>

但问题是它只播放动画1次。我也尝试过无限循环,但这也不起作用,与按两次按钮第二次没有任何反应相同。

最佳答案

您的代码的问题是,在连续单击时,div 元素已经位于您尝试为其设置动画的left 位置,因此似乎没有发生任何事情.

要解决此问题,请在再次运行动画之前将 left 位置重置回 0。试试这个:

$(document).ready(function() {
  $("button").click(function() {
    var moveTime = Math.floor(Math.random() * 1000) + 2000
    var slowDown = 1000;
    var $div = $('div').css('left', 0); // < reset the position here

    while (moveTime > 0) {
      $div.animate({
        left: slowDown + "px"
      });

      if (slowDown > 0) {
        slowDown--;
        moveTime = 0;
      }
      
      slowDown--;
      moveTime--;
    }
  });
});
div {
  position: absolute;
  float: left;
  margin: 0 0 0 -8400px;
  width: 10000px;
  height: 100px;
  background: repeating-linear-gradient(90deg, #DF0000, #DF0000 100px, #000000 100px, #000000 200px)
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Start Animation</button>
<div></div>

关于javascript动画不循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40911371/

相关文章:

javascript - ASP.NET MVC 下拉列表更改以在没有 Javascript 的情况下导致回发

javascript - jquery论坛评论回复或 "quote"

javascript - 如何在购物车中提交之前检查有效的整数数量

javascript - 从另一个域获取数据(json格式),无需jsonp

javascript - jQuery 动画步骤函数

javascript - Bootstrap datepicker 如何允许过去 6 个月的日期

javascript - 调用clearInterval 时有什么不同吗?

php - 使用ajax提交数据刷新

jQuery 动画()

Javascript jquery 动画、切换无法正常工作