innerHTML与document.createElement的优缺点

    innerHTML:  

        优点:

        可以指定位置创建元素

        进行复杂结构创建时操作较为简便:

       缺点:

覆盖问题(解决不了):虽然尝试使用+=方式解决,但是只能解决结构的问题,没有获取到所有的事件等内容。

 性能问题(已解决):

假如我们给box内部动态创建200个空div:

  console.time('innerHTML');

        var box = document.getElementById('box');

        for (var i = 0; i < 200; i++) {

            box.innerHTML += '  ';

        }

        console.timeEnd('innerHTML');

 通过对比,我们看到innerHTML进行元素创建操作的执行速度慢,具有性能问题。

上面的小测试创建200个div用时155.400146484375ms


        innerHTML属性执行效率问题的解决方式:

        避免使用innerHTML重复执行多次(不在循环中使用即可) (以下两种方式任选其一即可)

        1 使用字符串替代执行 - 2ms左右

        console.time('innerHTML');

        var box = document.getElementById('box');

        var str = '';

        for (var i = 0; i < 200; i++) {

            str += ' ';

        }

        box.innerHTML = str;

        console.timeEnd('innerHTML');

      2 使用数组替代执行 - 2ms左右

        console.time('innerHTML');

        var box = document.getElementById('box');

        var arr = [];

        for (var i = 0; i < 200; i++) {

            arr.push(' ');

        }

        box.innerHTML = arr.join('');

        console.timeEnd('innerHTML'); 

document.createElement() - 用于创建一个元素

            - 参数:字符串形式的标签名称

            效果:创建的元素默认不在页面中显示,需要根据实际的需求,添加到页面中的某个位置上。

  var box = document.getElementById('box');

        for (var i = 0; i < 200; i++) {   

            var div = document.createElement('div');

            box.appendChild(div);

        }

        console.timeEnd('createElement'); 

       用时   4.1279296875ms - 用于与innerHTML做性能对比使用

缺点:

          - 如果使用document.createElement()创建复杂结构,操作较为繁琐

        动态创建元素部分的小结:

          - 使用场景:

              - 如果结构复杂,使用innerHTML

              - 其他情况均可以使用document.createElement()

                - 如果要进行元素创建的结构内部已经具有其他元素,必须document.createElement()

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,981评论 1 45
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,362评论 1 10
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,378评论 2 17
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,154评论 0 2
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,102评论 0 3