1

我想执行一个在div不重载的情况下将字符串写入 a 的循环。我有一个array名为的全局名称列表namesarray里面有大约 2500 个名字。现在我想在divusing中写下名称ajax。但是当我想循环名称时,脚本有点过载,并在客户端发出警报时停止。这是我的循环:

for(var i = 0; i < names.length; i++){
   document.getElementById('div').innerHTML += names[i] + "<br/>";
}

我还尝试以较小的步长(例如 100)来交错循环(因为我认为循环不会过载)。我还window.setTimeout("function(i)",0);使用参数 i 进行了尝试,每次调用函数时都会执行 100 步,直到我位于length数组的第 1 位names

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

谢谢

4

2 回答 2

8

你可以这样编码:

document.getElementById('div').innerHTML = names.join('<br/>');

这将在单个指令中设置内部 html,解决加载问题。

于 2012-12-18T10:26:20.520 回答
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您的 -property 。array

另请注意,DOM 操作非常缓慢,因此将其降低到可能的最低级别是明智的。最好单独构建您的内容并将其一次性写入 DOM。

于 2012-12-18T10:32:20.120 回答