这个问题来自我之前的帖子,为什么 DOM 读/写操作的微小重新排序会导致巨大的性能差异。
考虑以下代码:
function clearHTML(divs) {
Array.prototype.forEach.call(divs, function (div) {
contents.push(div.innerHTML);
div.innerHTML = "";
});
}
function clearText(divs) {
Array.prototype.forEach.call(divs, function (div) {
contents.push(div.innerText); //innerText in place of innerHTML
div.innerHTML = "";
});
}
http://jsfiddle.net/pindexis/ZZrYK/
我对 n=100 的测试结果:
ClearHTML:~1ms
ClearText:~15ms
对于 n=1000:
ClearHTML:~4ms
ClearText:~1000ms
我在 google chrome 和 IE 上测试了代码,得到了类似的结果(Firefox 不支持 innerText)。
编辑:
与innerHTML相比,这两个函数之间的差异不是由innerText函数的缓慢引起的,这是肯定的(我尝试删除div.innerHTML =""
并提高了性能),这里发生了奇怪的浏览器重排。