批量修改DOM
程序员文章站
2022-05-28 21:03:57
...
当你需要对DOM元素进行一系列操作时,可以通过一下步骤来减少重绘和重排的次数:
- 使元素脱离文档流。
- 对其应用多重改变。
- 把元素带回文档中。
该过程会触发两次重排---第一步和第三步。如果你忽略这两个步骤,那么在第二部所产生的人和修改都会触发一次重排。
有三种基本方法可以使DOM脱离文档:
- 隐藏元素,应用修改,重新显示。
- 使用文档片段(document fragment)在当前DOM之外构建一个子树,再把它拷贝回文档。
- 将原始元素拷贝到一个脱离文档的节点中,修改副本,完成后再替换原始元素。
var data = [
{
"name":"name1"
"url":"url1"
},
{
"name":"name2"
"url":"url2"
}
], appendToElement = 要改变的节点对象;
function appendDataToElement(appendToElement, data) {
var a, li;
for (var i=0, max=data.length; i<max; i++ ){
a = document.createElement("a");
a.href = data[i].url;
a.appendChild(document.createTextNode(data[i].name));
li = document.createElment("li");
li.appendChild(a);
appendToElment.appendChild("li");
}
}
// 隐藏元素,应用修改,重新显示
var ul = document.getElementById("mylist");
ul.style.display = "none";
appendDataToElment(ul, data);
ul.style.display = "block";
//使用文档片段(document fragment)在当前DOM之外构建一个子树,再把它拷//贝回文档。
var fragment = document.createDocumentFragment();
appendDataToElment(fragment, data);
document.getElementById("mylist").appendChild(fragment);
//将原始元素拷贝到一个脱离文档的节点中,修改副本,完成后再替换原始元素。 var old = document.getElementById("mylist"); var clone = old.cloneNode(true); appendDataToElement(clone, data); old.parentNode.relaceChild(clone, old);
注:推荐尽可能地使用文档片断(第二个方案),因为它们所产生的DOM遍历和重排次数最少。
上一篇: 水煮蛋能减肥吗,减肥的你知道吗
推荐阅读
-
PHP如何批量检测并去除文件BOM头
-
分享六款echarts统计图的样式修改
-
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
-
存储过程配合UpdateDaset方法批量插入Dataset数据实现代码
-
PHP验证HTTP代理可用性[支持批量]
-
Python下如何实现文件的修改操作?(附示例)
-
Angular2使用Dom有哪些注意事项
-
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题_javascript技巧
-
Knockout text绑定DOM的使用方法_基础知识
-
dedecms无法发表文章,点击添加或者修改后,一片空白,该如何处理