进行DOM插入的最佳做法是什么?
答案 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。