javascript - Jquery循环中setTimeout的使用

标签 javascript jquery timer

我想将 p 的值从 10 更改为 1,并延迟 10 秒。

for (var i=0;i<9;i++) {
    setTimeout(function(){$('#timer').text(10-i)}, 1000);
}

它的值是 1,持续 1 秒,我希望它变成 10,然后是 9,然后是 8,等等。 这是fiddle 。我的错误是什么?

最佳答案

使用 setInterval 来实现此目的:-

    var i=0;
     var timer= setInterval(function(){
          i++;
          if(i==10){
            clearInterval(timer);    
          }
          $('#timer').text(10-i); 
      }, 1000);

在您的代码中,for 循环不会等待 setTimeout 完成。因此,当setTimeout等待时..for循环结束了。因此,一秒钟后,for 循环 结束..i 的值为 9,显示 10-9=1 ..

这里是链接 http://jsfiddle.net/1g8e7qy4/22/

关于javascript - Jquery循环中setTimeout的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27417699/

相关文章:

javascript - Firebug 在骗我吗?

javascript - 递归 'setTimeout' 函数调用最终会杀死 JS 引擎吗?

javascript - 从数组返回唯一值

javascript - 对象不支持属性或方法 jquery 插件

javascript - 在哪里放置用于 Facebook 的 javascript 共享的应用程序 ID

javascript - Handsontable RuleJS 缺少递归解析

javascript - 如何使用 jQuery Select2 插件删除与当前输入的文本匹配的下拉项?

c++ - 用于定期调用的现代高分辨率定时器

javascript - React 计时器卡在 :00 (state not updating) 上

c# - .NET 中最精确的计时器是什么?