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

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

最佳答案

试试这个

var counterInc = 0;
var counterMax = 10;

var timeoutId = window.setInterval(function() {
    $('#results').text(counterInc++);
    if (counterInc >= counterMax) {
        window.clearInterval(timeoutId);
    }
}, 500);​

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

发生的事情是您超时每三秒钟更新一次单元格,但是,循环可以在3秒内遍历大量的数字,因此距离setTimeout中的函数运行时间已经很久了。

这将每500ms触发一次功能(根据您的目的更改为3000ms),然后才使counterInc递增。添加它会在达到counterMax时清除时间间隔。

10-07 21:08