为什么计数时钟不起作用?


for(i=0;i<10;i++){
    setTimeout(function(){
        document.write(i);
    },(i*1000));
}

这是我的代码,除了计数部分外,它都可以工作。它每秒写入 10。谁能告诉我为什么?

这是一个已知问题。当您像i变化的值一样进行迭代时,在执行超时函数之前,您需要为每次执行复制i值。

最简单的解决方案是将其传递给单独的方法,如下所示:

for(i=0;i<10;i++){
   addToDocument(i);
}
function addToDocument(i){
 setTimeout(function(){
        document.write(i);
    },(i*1000));
}

与java不同,javascript的问题在于它不会将i视为最终的内部存储,这就是为什么你需要复制它的值。

最新更新