好了,伙计们,我正试着每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);
}我还尝试过将代码放入字符串中&将函数调用放入字符串中。我从来不能让它延迟。请帮帮我!
发布于 2011-07-14 07:29:34
也许相反,因为您多次运行同一个方法,所以应该使用setInterval方法?Here's an example of how you might do that.
发布于 2011-07-14 07:25:49
这样如何:
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例程的函数体,因此同样的逻辑也适用于上面。
发布于 2011-07-14 07:26:57
试试setTimeout("addNum(“+i+ ")",250);它不工作的原因是它对参数求值并执行,然后将其更改为类似于setTimeout( addNum(i),250的结果);
https://stackoverflow.com/questions/6686853
复制相似问题