1 回答
TA贡献1770条经验 获得超3个赞
该列表以两个项目开头。
add({name: 'three'});
增加了三分之一for(let i=0;i<list.length;i++){
循环遍历列表并调用setTimeout(print,c);
3 次(因为列表中有 3 个东西)function print(){
打印列表中的三件事中的每一个(由于第 3 步,它运行了三次)。
所以......如果我正确理解你的误解:
print
打印列表中的每个项目,因为它循环遍历列表。
print
不打印特定项目,因为它 (a) 并非旨在打印一个项目,并且 (b) 您没有向它传递一个参数来告诉它无论如何要打印哪个项目。
可能你想要一些类似的东西:
let list = [{
name: 'one',
},
{
name: 'two',
},
{
name: 'three'
}
];
let current_index = 0;
function print() {
const element = list[current_index];
if (!element) {
return; // end of the list
}
const output = `<li>${element.name}</li>`;
document.querySelector("ul").innerHTML += output;
current_index++;
setTimeout(print, 1000);
}
setTimeout(print, 1000);
<ul></ul>
...您可以在其中跟踪您正在处理的数组中的哪个元素,并在将数据添加到 HTML 时递增计数器,而不是在一个直接循环中全部添加。
添加回答
举报