while循环只返回最终结果

Ver*_*gün 5 javascript

while (counterInc < counter) {
  window.setTimeout(function () {
    $('#results').text(counterInc);
    }, 3000);
  counterInc++;
}
Run Code Online (Sandbox Code Playgroud)

此代码应每隔3000毫秒递增带有ID结果的标记,而不是while循环正在运行并返回最终结果.例如,不是将文本更改为1,2,3,4,5,... n,而是将文本更改为n.如何让循环每1000毫秒更新一次文本字段而不是只有最终结果?

Caf*_*eek 7

试试这个

var counterInc = 0;
var counterMax = 10;

var timeoutId = window.setInterval(function() {
    $('#results').text(counterInc++);
    if (counterInc >= counterMax) {
        window.clearInterval(timeoutId);
    }
}, 500);?
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/GufCs/4/

发生的事情是你每三秒更新一次单元格,但是,你的循环可以在3秒内完成一系列荒谬的数字,因此在setTimeout中的函数运行时已经很久了.

这将每500ms触发一次该功能(为了您的目的而改为3000ms),然后才会增加counterInc.添加它在到达counterMax时清除Interval.