javascript 中三种动态创建元素的区别以及效率对比

简介: javascript 中动态创建元素的方法一共有三种,这里简单介绍一下,并通过小案例来对比element.innerHTML和document.createElement ()创建元素效率那个快。

📋 个人简介

  • 💖 作者简介:大家好,我是阿牛,全栈领域新星创作者。😜
  • 💬格言:迄今所有人生都大写着失败,但不妨碍我继续向前!🔥

前言

javascript 中动态创建元素的方法一共有三种,这里简单介绍一下,并通过小案例来对比element.innerHTML和document.createElement ()创建元素效率那个快。

三种动态创建元素区别

1.document.write ()
2.element.innerHTML
3.document.createElement ()

区别
1.document.write 是直接将内容写入页面的内容流,但是文档流执行完毕,则它会导致页面全部重绘。(很少用到)
2.innerHTML是将内容写入某个 DOM 节点,不会导致页面全部重绘。

element.innerHTML和document.createElement ()创建元素效率对比

1.element.innerHTML

    <div class="inner"></div>
    <script>
        var d1 = +new Date();
        var inner = document.querySelector(".inner");
        for (var i=0;i<=1000;i++){
            inner.innerHTML += '<a href="#">百度</a>';
        }
        var d2 = +new Date();
        console.log(d2 - d1);
    </script>

在这里插入图片描述
由图可以看出,我们通过innerHTML拼接字符串创建1000个元素花费了800多毫秒,这样的效率很差。
但是我们可以避免拼接字符串的方式,因为大量拼接字符串本身就是一个耗时耗内存的操作,可以把要创建的元素放进一个数组中,然后用数组的join()方法将数组元素拼接为字符串,再通过innerHTML添加。

    <div class="inner"></div>
    <script>
        var d1 = +new Date();
        var inner = document.querySelector(".inner");
        var arr = [];
        for (var i=0;i<=1000;i++){
            arr.push('<a href="#">百度</a>')
        }
        inner.innerHTML += arr.join('');
        var d2 = +new Date();
        console.log(d2 - d1);
    </script>

在这里插入图片描述
看这样只有2毫秒,效率甩凭借字符串几条街。

2.document.createElement()

为了对比明显,我们将循环数量加到十万,先看innerHTML通过数组拼接的效率

    <div class="inner"></div>
    <div style="border: 1px solid red; height: 2px;width: 100px;"></div>
    <script>
        var d1 = +new Date();
        var inner = document.querySelector(".inner");
        var arr = [];
        for (var i=0;i<=100000;i++){
            arr.push('<div style="border: 1px solid red; height: 2px;width: 100px;"></div>')
        }
        inner.innerHTML += arr.join('');
        var d2 = +new Date();
        console.log(d2 - d1);
    </script>

在这里插入图片描述

然后我们看同样情况下document.createElement()的效率

    <div class="create"></div>
    <script>
        var d1 = +new Date();
        var create = document.querySelector(".create");
        for (var i=0;i<=100000;i++){
            var div = document.createElement('div');
            div.style.width = '100px';
            div.style.height = '2px';
            div.style.border = '1px solid red'
            create.appendChild(div);
        }
        var d2 = +new Date();
        console.log(d2 - d1);
    </script>

在这里插入图片描述

很明显,依旧是innerHTML通过数组方式创建元素的效率依旧高于document.createElement()的效率。

总结

1.innerHTMT创建多个元素效率更高(不要拼接字符串,采取数组形式拼接),结构稍微复杂。
2.createElement()创建多个元素效率稍低一点点,但是结构更清晰。
==总结:不同浏览器下, innerHTML效率要比 createElement 高==

结语

陆陆续续写了很多前端基础知识和小demo了,这些对初学者都很有用,赶紧关注一手学习吧!

相关文章
|
12天前
|
设计模式 JavaScript 前端开发
js中new和object.creat区别
【10月更文挑战第29天】`new` 关键字和 `Object.create()` 方法在创建对象的方式、原型链继承、属性初始化以及适用场景等方面都存在差异。在实际开发中,需要根据具体的需求和设计模式来选择合适的方法来创建对象。
|
12天前
|
JavaScript 前端开发 开发者
.js的dom元素操作
【10月更文挑战第29天】通过灵活运用这些 DOM 元素操作方法,JavaScript 可以实现丰富的网页交互效果,如动态更新页面内容、响应用户操作、创建和删除页面元素等。在实际开发中,开发者可以根据具体的需求和场景,选择合适的 DOM 元素操作方法来实现所需的功能,为用户提供更加流畅和动态的网页体验。
|
16天前
|
JavaScript 前端开发
在 JavaScript 中动态创建插槽内容
【10月更文挑战第26天】在JavaScript中动态创建插槽内容有多种方法,从简单的字符串拼接和DOM操作到使用流行的框架如Vue.js和React等。选择哪种方法取决于项目的具体需求和所使用的技术栈。在简单的静态页面中,原生的JavaScript DOM操作可能就足够了;而在复杂的单页应用中,使用框架可以提供更好的开发体验、性能优化和代码组织。
|
29天前
|
存储 JavaScript 前端开发
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
JavaScript 数据类型分为基本数据类型和引用数据类型。基本数据类型(如 string、number 等)具有不可变性,按值访问,存储在栈内存中。引用数据类型(如 Object、Array 等)存储在堆内存中,按引用访问,值是可变的。本文深入探讨了这两种数据类型的特性、存储方式、以及检测数据类型的两种常用方法——typeof 和 instanceof,帮助开发者更好地理解 JavaScript 内存模型和类型检测机制。
68 0
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
|
1月前
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
45 4
|
1月前
|
JavaScript
js删除数组中已知下标的元素
js删除数组中已知下标的元素
35 4
|
1月前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
16 2
|
1月前
|
JavaScript 前端开发 索引
JS 删除数组元素( 5种方法 )
JS 删除数组元素( 5种方法 )
37 1
|
1月前
|
JavaScript 前端开发
【JavaScript】let,const和var的区别
总的来说,随着ECMAScript 6(ES6)及后续版本的推广,`let`和 `const`因其增强的块级作用域和对变量行为的更严格控制,逐渐成为现代JavaScript编码实践中推荐使用的变量声明方式。而 `var`由于其历史遗留的局限性,正逐渐被边缘化,但在维护老代码或处理特定兼容性需求时仍需了解。
32 3
|
2月前
|
JavaScript 前端开发
JavaScript从二维数组抽取元素组成新数组的三种方法
JavaScript从二维数组抽取元素组成新数组的三种方法