我被告知不要element.innerHTML += ...像这样添加内容:
element.innerHTML += ...
var str = "<div>hello world</div>"; var elm = document.getElementById("targetID"); elm.innerHTML += str; //not a good idea?
这有什么问题?我还有什么其他选择?
每次innerHTML设置时,都必须解析HTML,构造DOM并将其插入文档中。这需要时间。
innerHTML
例如,如果elm.innerHTML有数千个div,表,列表,图像等,则调用.innerHTML += ...将导致解析器重新重新解析 所有这些内容 。这也可能破坏对已经构造的DOM元素的引用,并引起其他混乱。实际上,您要做的就是在末尾附加一个新元素。
elm.innerHTML
.innerHTML += ...
最好只致电appendChild:
appendChild
var newElement = document.createElement('div'); newElement.innerHTML = '<div>Hello World!</div>'; elm.appendChild(newElement);
这样,将elm不会再次解析的现有内容。
elm
注意: [某些]浏览器可能足够聪明,可以优化+=操作员,而不重新解析现有内容。我还没有对此进行研究。
+=