好吧,伙计们,我试图每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;函数调用字符串。我不能让它延迟。请帮忙!
答案 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.