执行长循环

时间:2012-12-18 10:21:38

标签: javascript html

我想执行一个循环,在div中写入字符串而不会重载。我在名为array的全球names中有一个名单。 array填充了大约2500个名字。现在我想使用divajax中写下名字。但是,当我想循环名称时,脚本有点过载,并在客户端发出警报时停止。这是我的循环:

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}}处。

我知道有一种简单的方法。但是我找不到那样的方式.....很高兴获得帮助。

由于

2 个答案:

答案 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。