FOR循环计数

Ror*_*ley 1 javascript jquery for-loop

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

for (i=0;i<=10;i++){
  setTimeout(function(){
      $(".test").html(i);
  },10000);
}?
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

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

有没有办法实现我的需要?

谢谢

zer*_*kms 8

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

for (i=0;i <= 10;i++){
    (function(i) {
        setTimeout(function(){
            $(".test").html(i);
        }, i * 1000);
    })(i);
}?
Run Code Online (Sandbox Code Playgroud)

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

  • 当只有10个时,没什么大不了的,但JavaScript定时器出了名的不准确.如果你还有几个,我想你会发现,随着定时器的发射,它们开始以不同的间隔发生.如果你要使用`setTimeout`而不是`setInterval`,你应该使用递归来调用每个后续的. (2认同)