我如何让Javascript for循环显示它已经循环的次数与实时计数
How can I take a Javascript for loop display the number of times it has looped with a live count?
我怎样才能让Javascript for循环显示它循环的次数?
for (var i = 0; i < 10; i ++) {
[ DO FUNCTION HERE ]
document.getElementsByTagName("span")[3].innerHTML = "Cycles: " + i;
}
我希望它显示"Cycles: #",并在循环每个函数时使用# increment。类似于加载屏幕。想法吗?
这样如何:
var out = document.getElementsByTagName("span")[3];
var speed = 1;
var i = 0;
function loop() {
out.innerHTML = "Cycles " + i;
// do something
if (++i < 10) {
setTimeout(loop, speed);
}
}
loop();
如果发生得太快而无法观察时间,只需增加speed
。如果您将speed
设置为100,您将看到计数器每秒增加大约10次,这取决于您的代码执行所需的时间。
这将每秒更新一次显示。
演示:http://jsfiddle.net/Lb3Uc/
var span = document.getElementsByTagName("span")[3];
var i = 0;
(function looper() {
if( i++ < 10 ) {
span.innerHTML = "Cycles: " + i;
setTimeout( looper, 1000);
}
})();
每次looper
函数运行时,只要i < 10
在1000ms
延迟后递归调用它自己。
这种异步代码是允许页面重绘所必需的。
在您的函数中,您不是在添加而是替换span的内容。使用+=
操作符代替
for (var i = 0; i < 10; i ++) {
document.getElementById("oput").innerHTML += "Cycles: " + i + "<br>";
}
您的for
循环实际上正在做您希望它做的事情,但是javascript
执行得如此之快,您直接进入最终循环的速度比您可以注意到它的变化快。试着将var i
写入控制台,您就会明白我的意思。它在每个循环中打印,但看起来几乎是即时的,因为脚本没有花费任何时间来执行。
根据你的请求,这里是你如何减慢你的应用程序,这样你就可以实现你的定时器…
var i = 0;
var interval = setInterval(
function() {
/* add the rest of your method here */
document.getElementsByTagName("span")[3].innerHTML = "Cycles: " + i;
i++;
if(i > 10) { /* number of repetitions */
clearInterval(interval);
}
},
1000); /* seconds delayed */
为了协调AJAX函数和进度更新视图,不要人为地降低函数调用的速度。首先,它会减少响应时间,这是用户不喜欢的。另一方面,进度会差一个。
相反,让AJAX函数调用一个函数,当AJAX调用成功或有条件地完成时更新进度,这取决于什么是合适的。
最后,您可能需要更改文档结构,这将需要更改获取进度元素的方式。相反,给进度元素一个ID,并使用getElementById
。
var async_done = (function() {
var doneCount = 0;
return function () {
++doneCount;
document.getElementById("Progress").innerHTML = "Cycles: " + doneCount;
};
})();
for (var i = 0; i < 10; i ++) {
async_function(async_done);
}
相关文章:
- jQuery:循环一个具有不同超时值的循环
- 在循环中分配json值时,值被覆盖
- 如何在下面的ES6循环中获得前面的文本
- 为什么“;未定义的“;在JavaScript中结束循环
- Javascript循环不会自我更新
- 如何使用jquery处理php循环通过元素
- 而循环只设置php中输入字段中的第一个值
- 循环遍历数组中的特定索引
- 使用Facebook live API创建实时视频对象时的隐私设置
- Javascript返回值只在循环中返回一次
- 按照选项卡索引的顺序循环一个jQuery选择
- 循环遍历以数组为值的Javascript对象
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 有任何可能将facebook实时信使整合到一个网站中
- 循环结束/推送到数组之前在页面上呈现EJS
- 循环比赛位置算法
- 我怎么能有一个实时计时器,在3秒的循环内每秒钟更新一次
- for循环appendChild实时显示
- 我如何让Javascript for循环显示它已经循环的次数与实时计数