html动态添加节点,动态创建html节点方法

本文介绍了JavaScript中动态创建HTML节点的几种方法,并着重讲解了为何在循环中直接使用appendChild会导致频繁的页面回流,从而影响性能。通过使用DocumentFragment可以创建内存中的节点片段,减少回流次数,提高代码执行效率。文章通过实例展示了如何优化代码,将数据渲染到表格中,以减少DOM操作对页面性能的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

常见方法

《JavaScript高级程序》里介绍到动态创建html节点的几种方法,常见的有以下几种:crateAttribute(name):        用指定名称name创建特性节点

createComment(text):       创建带文本text的注释节点

createDocumentFragment():    创建文档碎片节点

createElement(tagname):      创建标签名为tagname的节点

createTextNode(text):       创建包含文本text的文本节点

属于菜鸟的我,在做项目时,通过ajax获取了后台数据做表格数据渲染时,用的是dom节点的拼接append方法。后来才知道这种方法对于前端的性能优化来说是最慢的,虽然说这是最简单的方法。

举个栗子: 我从后台获取到一个有很多元素的data[]数组,要把里面的数据遍历到ul的li里。var liNode, i, len;

var ulNode = document.getElementById('container');

for(i = 0; len = data.length; i++) {

liNode = document.createElement('li');

liNode.innerHtml = data[i];

ulNode.appendChild(liNode);

}

这段代码是能实现需求的,但是,在循环里调用data.length次的document.xxx.appendChild(),这里就每一次的调用就回产生一次页面渲染,所以对于页面优化来说,这是大打折扣的,这就要说说下面要说的创建碎片啦。

由于DOM操作会导致浏览器的回流,回流需要花费大量的时间进行样式计算和节点重绘与渲染,所以应当尽量减少回流次数。一种可靠的方法就是加入元素时不要修改页面上已经存在的元素,而是在内存中的节点进行大量的操作,最后再一并将修改运用到页面上。DOM操作本身提供一个创建内存节点片段的功能:document.createDocumentFragment(),我们可以将其运用于上述代码中:var oFragment = document.createDocumentFragment();

var ulNode = document.getElementById('container');

for(var i = 0; i < data.length; i++){

var liNode = document.createElement('li');

var txt = document.createTextNode(data[i]);

liNode.innerHtml = txt;

oFragment.appendChild(liNode);

}

ulNode.appendChild(fragment);

这样就只会触发一次回流,效率会得到很大的提升。如果需要对一个元素进行复杂的操作(删减、添加子节点),那么我们应当先将元素从页面中移除,然后再对其进行操作,或者将其复制一个(cloneNode()),在内存中进行操作后再替换原来的节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值