【发布时间】:2014-10-15 09:36:53
【问题描述】:
这有什么区别
var content= "";
for (i = 1; i <= 3; i++) {
content = content + '<fieldset>' + '<legend>Grup ' + i + '</legend>';
for (j = 1; j <= 5; j++) {
content = content + '<div class="item"> item ' + i + ',' + j + '</div>';
}
content = content + '</fieldset>';
}
div.innerHTML = content;
还有这个
for (i = 1; i <= 3; i++) {
div.innerHTML = div.innerHTML + '<fieldset>' + '<legend>Grup ' + i + '</legend>';
for (j = 1; j <= 5; j++) {
div.innerHTML = div.innerHTML + '<div class="item"> item ' + i + ',' + j + '</div>';
}
div.innerHTML = div.innerHTML + '</fieldset>';
}
我尝试了所有两种方法。但是第二个没有按我的预期工作。当我在 for 循环中使用 div.innerHTML 时,内部循环在 之后工作,输出如下:
<fieldset>
<legend>Grup x</legend>
</fieldset>
<div class="item"> item 1,1 </div>
<div class="item"> item 1,2 </div>
....
您可以在http://mutlakyazilim.com/test.html 测试该问题。为什么它们不同,有人知道吗?
【问题讨论】:
-
首选第一个。每次修改 div 的 innerhtml 时,都会强制浏览器重新渲染 div。最好将您的 html 构建为字符串 (
content),然后一次性将其全部填充到 DOM 中。
标签: javascript html for-loop asynchronous innerhtml