这个网站对 3 种不同的方法进行了测试,看起来.html
最快,其次是.append
。其次是.innerHTML
。有人可以向我解释原因吗?
这是进行比较的网站在这三种方法中。
我读过这个问题这是相关的,但我并不真正理解给定的答案,而且这个问题并没有真正详细说明.innerHtml
。
我不明白以下部分:
创建一个临时元素,我们称其为x。X的InnerHTML设置为您传递的HTML字符串。然后,jQuery将将每个生成的节点(即X的childnodes)转移到新创建的文档片段中,然后将其下次缓存。然后,它将作为新的DOM收藏品返回片段的儿童。请注意,它实际上比这要复杂得多,因为JQuery进行了一堆跨浏览器检查和其他各种优化。例如。如果你通过
<div></div>
对于jQuery(),jQuery将进行捷径,然后简单地做文档。
有人可以简化这一点吗?
答案
该基准是毫无价值的。innerHTML
总是比DOM操纵更快。
jQueryseems 更快的速度是因为它首先使用所有HTML准备一个字符串,而其他人则每次迭代进行一次操作。另请注意,jquery.html()使用innerHTML
无论何时可以。
来自基准的jQuery
var html = '';
for (var i = 0; i < len; i++) {
html += '<div>Test ' + i + '</div>';
}
$('#list').html(html);
Innerhtml从基准测试
var list = document.getElementById('list');
for (var i = 0; i < len; i++) {
list.innerHTML = list.innerHTML + '<div>Test ' + i + '</div>';
}
测试innerHTML
如果写的话会更快:
var list = document.getElementById('list');
var html = '';
for (var i = 0; i < len; i++) {
html += '<div>Test ' + i + '</div>';
}
list.innerHTML = html;