zoukankan      html  css  js  c++  java
  • js中几种动态创建元素并设置文本内容的比较,及性能测试。

    动态创建标签并添加文本信息

    1. <ul>
    2. </ul>

    1 appendChild (都兼容)

    1. var ul = document.getElementsByTagName("ul")[0];
    2. for(var i = 0; i < 5; i++) {
    3. var li = document.createElement("li");
    4. li.appendChild(document.createTextNode("text"));
    5. ul.appendChild(li); //逐个添加列表项,会导致浏览器的反复渲染
    6. }

    2.insertAdjacentHTML (都兼容)

    1. var ul = document.getElementsByTagName("ul")[0];
    2. for(var i = 0; i < 5; i++) {
    3. ul.insertAdjacentHTML("afterbegin", "<li>text</li>")
    4. }

    3.innerHTML (都兼容)

    1. var ul = document.getElementsByTagName("ul")[0],
    2. html = "";
    3. for(var i = 0; i < 5; i++) {
    4. html += "<li>text</li>";
    5. }
    6. ul.innerHTML = html;

    4.createDocumentFragment (都兼容)

    1. var ul = document.getElementsByTagName("ul")[0],
    2. dF = document.createDocumentFragment();//创建文档片段
    3. for(var i = 0; i < 5; i++) {
    4. var li = document.createElement("li");
    5. li.appendChild(document.createTextNode("text"));
    6. dF.appendChild(li); //用文档片段来保护创建的列表项,然后再一次性添加到文档中,这里的文档片段相当于一个仓库
    7. }
    8. ul.appendChild(dF);
    9. ul = null,
    10. dF = null;

    下面是几种方法的性能对比

    测试网站 https://jsperf.com

    测试结果以每秒钟执行测试代码的次数(Ops/sec)显示,这个数值越大越好。除了这个结果外,同时会显示测试过程中的统计误差,以及相对最好的慢了多少(%),统计误差也是非常重要的指标

    本人只在chrome上 测试了。数据可能不准确。你也可以在ff ,ie或其他浏览器测试。

    insertAdjacentHTML    vs     append

    vs

    insertAdjacentHTML     vs innerHTML

    vs

    insertAdjacentHTML  vs createDocumentFragment

    vs

    appendChild   vs   createDocumentFragment

    vs

    终上所述几种方法依我个人的测试得出结论

    innerHTML>>insertAdjacentHTML   >appendChild   >createDocumentFragment

    所以最好使用innerHTML(性能最优越)来动态创建标签。   insertAdjacentHTML代码量最少

  • 相关阅读:
    学习使人快乐9--eclipse常用快捷键总结
    5.20新一周
    Mybatis+Spring框架整合
    Mybatis3
    Mybatis2
    Mybatis1
    查找算法
    Spring3:spring的事务操作
    Spring2:
    Spring:
  • 原文地址:https://www.cnblogs.com/ljk001/p/7999892.html
Copyright © 2011-2022 走看看