javascript - while 循环只返回最终结果

标签 javascript

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

此代码应每 3000 毫秒递增带有 ID 结果的标签,而不是运行 while 循环并返回最终结果。例如,不是将文本更改为 1、2、3、4、5、..n,而是将文本更改为 n。如何让循环每 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 中的函数运行时完成了很久。

这将每 500 毫秒触发一次函数(根据您的目的更改为 3000 毫秒),然后它才会递增 counterInc。添加它会在达到 counterMax 时清除 Interval。

关于javascript - while 循环只返回最终结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12062340/

相关文章:

javascript - 如何正确使用 redux 和 react-native 导航

javascript - 用于初始化给定长度数组的模板文字

JavaScript 基本替换同一字符串中的两个字符

javascript - 如何根据多个嵌套条件过滤对象?

javascript - 创建一个简单的 google books api

javascript - 删除带有 class 属性和 contenteditable 值集的空 div

javascript - Node js 事件循环中的微任务在哪里执行,它的阶段是如何排列优先级的?

javascript - 正确加载顺序 javascript 文件

javascript - 播放后如何重置 CSS 过渡

javascript - 如何在 two.js 中捕获形状或组的点击事件?