我想执行一个循环,在div
中写入字符串而不会重载。我在名为array
的全球names
中有一个名单。 array
填充了大约2500个名字。现在我想使用div
在ajax
中写下名字。但是,当我想循环名称时,脚本有点过载,并在客户端发出警报时停止。这是我的循环:
for(var i = 0; i < names.length; i++){
document.getElementById('div').innerHTML += names[i] + "<br/>";
}
我还试图以100这样的较小步骤交错循环(因为我认为循环不会超载)。我还使用window.setTimeout("function(i)",0);
和param i一起尝试了,每次调用函数时都会执行100步,直到我在数组length
的{{1}}处。
我知道有一种简单的方法。但是我找不到那样的方式.....很高兴获得帮助。
由于
答案 0 :(得分:8)
您可以将其编码为:
document.getElementById('div').innerHTML = names.join('<br/>');
这将在单个指令中设置内部html,解决负载问题。
答案 1 :(得分:0)
以这种方式尝试:
var content = '';
for(var i = 0, n_length = names.length; i < n_length; i++) {
content += names[i] + "<br/>";
}
document.getElementById('div').innerHTML += content; // if the previous content should remain there
请注意,它更快,存储循环的中止值。否则,对于循环的每次迭代(2500 x),它将读取length
的{{1}} - 属性。
另请注意,DOM-Manipulation非常慢,因此它可以将其降低到可能的最低水平。更好地分别构建您的内容并将其一次性写入DOM。