javascript - 如何使用pureJS循环遍历数组并以500ms的间隔显示每个值?
问题描述
下面的循环基本上循环遍历我的数组,sumFormat
然后以间隔显示数组的每个值500ms
,这很好,但它一次只显示一次数组值,所以
例如,如果数组包含[1, 2, 3]
- 它显示,
1
然后500ms
显示2
代替1
, - 但我希望它显示,
1
然后500ms
显示2
在旁边 1
所以_1 2
- 然后
1 2 3
等等,
我试图弄清楚,但似乎无法正确解决。
for (var i = 0; i < sumFormat.length; i++) {
(function(i) {
setTimeout(function() {
factOut.innerHTML = sumFormat[i];
}, 500 * i);
})(i);
}
解决方案
与现有的连接innerHTML
而不是仅仅分配给它,因为这将覆盖以前存在的任何内容。您也可以使用let
而不是var
使代码更整洁。此外,由于您只插入text,而不是 HTML 标记,因此最好使用textContent
:
const sumFormat = [1, 2, 3, 4, 5];
for (let i = 0; i < sumFormat.length; i++) {
setTimeout(function() {
factOut.textContent += ' ' + sumFormat[i];
}, 500 * i);
}
<div id="factOut"></div>
另一种方法,通过将数组项从 0 连接到当前索引:
const sumFormat = [1, 2, 3, 4, 5];
for (let i = 0; i < sumFormat.length; i++) {
setTimeout(function() {
factOut.textContent = sumFormat.slice(0, i + 1).join(' ');
}, 500 * i);
}
<div id="factOut"></div>
推荐阅读
- tree - 线性时间的 MST,边权重 {1 到 100}
- selenium - 从 Windows 计划任务以 SYSTEM 用户身份执行 Selenium 失败的原因
- r - 使用简单的 for 循环将状态名称与相应的状态编号匹配
- javascript - 使用“createElement”创建按钮时执行按钮的 onclick 属性
- openmdao - 衍生品警告没有意义
- mysql - 使用空间数据查询慢,如何加快
- java - 需要链接 private_key.pem 和 chain.crt
- winapi - 调用 GetDIBits() 成功,但程序终止
- ios - 将视频从 JSON 解析为 Swift (SwiftUI)
- junit - JUnit4 - 参数化测试扩展了参数化基类 - 需要它们的笛卡尔积