JS setTimeout不延迟

时间:2011-07-13 23:22:48

标签: javascript delay settimeout

好吧,伙计们,我试图每1/4秒左右在我的页面上添加数字。因此,用户可以看到更改。我正在使用setTimeout,我的所有计算都正确发生但没有任何延迟。这是代码:

for(var i = 0; i < 10; i++)
{
  setTimeout(addNum(i),250);
}

我也试过捕获返回值:

for(var i = 0; i < 10; i++)
{
  var t = setTimeout(addNum(i),250);
}

我也尝试使用函数语法作为setTimeout参数的一部分:

for(var i = 0; i < 10; i++)
{
  var t = setTimeout(function(){array[j].innerHTML + 1},250);
}

我也尝试将代码放入字符串&amp;函数调用字符串。我不能让它延迟。请帮忙!

3 个答案:

答案 0 :(得分:3)

怎么样:

var i=0;
function adder() {
   if(i>=10) {return;}
   addNum(i++);
   setTimeout(adder,250);
}
adder();

当您执行setTimeout(addNum(i),250);时,您立即执行了该功能(函数名称后跟()将立即执行,并将返回值传递给要执行的超时1/4秒后)。所以在一个循环中,它会立即执行所有10个循环。这就是你所看到的。

捕获返回值var t = setTimeout(...);很有帮助,但不是在您的用例中;该值是计时器ID号,用于取消超时。

不确定你最后的尝试是什么,虽然可能是你addNum例程的函数体,所以同样的逻辑适用于上面。

答案 1 :(得分:0)

尝试setTimeout(“addNum(”+ i +“)”,250);它不工作的原因是因为它评估参数并执行它并将其更改为类似setTimeout(addNum(i)的结果,250);

答案 2 :(得分:0)

也许相反,由于您多次运行相同的方法,您应该使用setInterval方法代替? Here's an example of how you might do that.