FOR循环计数

时间:2012-05-13 22:12:10

标签: javascript jquery for-loop

我有以下代码,我试图使用FOR loop简单地计数到十次通过每次迭代我想使用jQuery来更新值为i的div元素

for (i=0;i<=10;i++){
  setTimeout(function(){
      $(".test").html(i);
  },10000);
}​

JSFIDDLE

问题是,循环将执行,直到完成后才会显示任何内容,这只是数字10。

有没有办法达到我的需要?

感谢

3 个答案:

答案 0 :(得分:8)

由于封闭效果,您的代码无法正常工作。它通常通过创建另一个在创建后立即调用的匿名函数来解决:

for (i=0;i <= 10;i++){
    (function(i) {
        setTimeout(function(){
            $(".test").html(i);
        }, i * 1000);
    })(i);
}​

http://jsfiddle.net/zerkms/GgzFW/4/

答案 1 :(得分:3)

demo jsFiddle

var i = 0,
    T =setInterval(function(){
        i < 10 ?  $(".test").html(++i) : clearInterval(T);       
    },1000);

$(".test").html(i);

答案 2 :(得分:2)

请尝试使用setInterval()

var i = 0;

var timer = setInterval(function() {
    $('.test').html(i);

    i++;

    if(i > 10) {
        clearInterval(timer);
    }
}, 10000);
​

您的当前循环将尽可能快地循环,并在调用循环后大约10秒内设置10次超时。 setInterval()所做的是每隔10秒调用传递给它的函数中的代码,实际上是延迟循环。

如果if()通过清除变量,则i > 10语句结束时{{1}}语句将停止发生的间隔。

我已经分配了你的JSFiddle here,等待时间为100毫秒,而不是10秒用于测试目的。