最快的DOM插入

时间:2009-03-11 14:53:27

标签: javascript dom

进行DOM插入的最佳做法是什么?

  • 在循环中一次插入大块html vs元素会更快吗?
  • 你插入的html或者块的大小有什么关系?
  • 插入表格比使用表格黑客只插入行更快?

5 个答案:

答案 0 :(得分:18)

设置innerHTML通常比插入单独的节点更快。

另一种可能性是create a DocumentFragment,它允许一次插入所有节点。使用DocumentFragments的另一个好处是它们很容易cloned,它可以替换innerHTML的大量用例,并且可能更快,因为不涉及解析。

答案 1 :(得分:12)

innerHTML插入比DOM操作1:1略快,并且在实际插入多个节点和属性等的情况下获得更多...但是它更容易出错并且更危险,因为它本质上是伪装的eval语句。 / p>

根据我的经验,JS现在如此之快,以至于innerHTML的速度提升并不能证明除了最大的插入/迭代批次之外的任何风险。

简而言之,您希望尽可能少地进行DOM操作,因此在创建插入层次结构时的一个提示是在内存中相互创建它们,然后在最后可能的时刻将最高元素插入到DOM中。这为浏览器留下了最少的渲染更新。再说一次,我们谈的是几分之一毫秒......

答案 2 :(得分:3)

innerHTML实际上是更慢,然后在许多情况下直接进行DOM操作。 在jsperf上查看benchmark

没有"正确答案",您必须为您的特定用例找到合适,最有效的方法

答案 3 :(得分:1)

对于大块的html,将文本分配给innerHTML肯定会更快。 虽然它得到了所有主流浏览器的支持,但innerHTML并不符合w3c标准,因此一些程序员对使用它犹豫不决。

答案 4 :(得分:1)

一次完成这一切肯定会更快。另请查看Steve Souder's blog和他的book