在浏览器中,我们一旦把节点添加到document.body(或者其他节点)中,页面就会更新并反映出这个变化,对于少量的更新,一条条循环插入也会运行很好,也是我们常用的方法。代码如下:
for(var i=0;i<5;i++){
var op = document.createElement("span");
var oText = document.createTextNode(i);
op.appendChild(oText);
document.body.appendChild(op);
}
但是,如果当我们要向document中添加大量数据时(比如1w条),如果像上面的代码一样,逐条添加节点,这个过程就可能会十分缓慢。
为了解决这个问题,我们可以引入createDocumentFragment()方法,它的作用是创建一个文档碎片,把要插入的新节点先附加在它上面,然后再一次性添加到document中。代码如下:
var oFragmeng = document.createDocumentFragment(); //先创建文档碎片
for(var i=0;i<10000;i++){
var op = document.createElement("span");
var oText = document.createTextNode(i);
op.appendChild(oText);
oFragmeng.appendChild(op); //先附加在文档碎片中
}
document.body.appendChild(oFragmeng);//最后一次性添加到document中
经过测试,在ie,firefox下性能明显得以提高。大家可以自己测试下。
前端性能优化都是从一些细节地方做起的,如果不加以注意,后果很严重。
一旦把节点添加到document.body(或其后的节点)中,页面就会立即反映出这个变化。对于少量的更新,这是很好的。然而,当要向document.body添加大量数据时,如果逐个添加这些节点,这个过程有可能会十分缓慢。为解决这个问题,可以创建一个文档碎片,把所有的新节点附加其上,然后把文档碎片的内容一次性添加到document中。
假设你想创建十个新段落。你可能这样写:
var arrText = ["1","2","3","4","5","6","7","8","9","10"];
for(var i=0;i<arrText.length;i++) {
var oP = document.createElement("p");
var oText = document.createTextNode(arrText[i]);
oP.appendChild(oText);
document.body.appendChild(oP);
}
这段代码运行良好,但问题是它调用了十次document.body.appendChild(),每次要产生一次页面刷新。这时,文档碎片会更高效:
var arrText = ["1","2","3","4","5","6","7","8","9","10"];
var oFragment = document.createDocumentFragment();
for(var i=0;i<arrText.length;i++) {
var oP = document.createElement("p");
var oText = document.createTextNode(arrText[i]);
oP.appendChild(oText);
oFragment.appendChild(oP);
}
document.appendChild(oFragment);
这段代码中,document.body.appendChild()仅调用了一次,这意味首只需要进行一次屏幕的刷新。
分享到:
相关推荐
### JavaScript性能优化之创建文档碎片(document.createDocumentFragment) 在探讨`document.createDocumentFragment()`方法之前,我们首先需要理解浏览器在处理DOM(文档对象模型)节点插入时的基本行为。DOM是HTML...
JavaScript文档碎片操作是一种高效处理DOM元素的技术,尤其在需要大量添加或删除DOM节点时,能够显著提升页面性能。文档碎片(Document Fragment)并不是真正意义上的DOM节点,而是一个轻量级的容器,它允许我们在...
在JavaScript中,文档碎片(Document Fragment)是一种轻量级的文档结构,它允许开发者在不直接操作DOM树的情况下,一次性地处理多个节点。这在处理大量动态内容时能显著提高性能,因为它减少了对DOM的操作次数,...
因此,了解DOM操作的最佳实践至关重要,例如使用文档碎片(`document.createDocumentFragment()`)、批量操作(收集多个修改并一次性应用)以及使用CSS选择器(更高效地定位元素)等。 总的来说,JavaScript DOM是...
`document.createDocumentFragment()`函数用于创建一个新的文档碎片。文档碎片是一个特殊的DOM节点,可以包含多个子节点,但不会直接显示在页面上。使用文档碎片可以提高DOM操作的效率,因为它可以将多个DOM操作合并...
为解决这个问题,可以创建一个文档碎片,把所有的新节点附加其上,然后把文档碎片的内容一次性添加到document中。这是我写的一个简单的测试页面: 代码如下:<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 ...
1. 尽量减少DOM操作:频繁修改DOM会降低性能,可以使用文档碎片(document.createDocumentFragment)或数组操作后再一次性插入DOM。 2. 使用事件代理:为父元素绑定事件,通过event.target判断实际触发事件的子元素...
2. **使用文档碎片**:通过`document.createDocumentFragment()`创建文档碎片,先在此处构建新结构,最后再添加到DOM,减少对页面的影响。 3. **事件委托**:将事件监听器添加到父元素,利用事件冒泡机制处理子元素...
通过创建文档碎片(`document.createDocumentFragment()`)、批量操作和缓存引用等方法可以优化DOM操作。 10. **jQuery和其他库**:虽然本资源可能不涉及jQuery等库,但它们提供了更简洁的API来操作DOM,简化了跨...
7. **文档碎片**:`document.createDocumentFragment`创建文档碎片,用于高效地批量操作DOM,避免频繁的DOM更新导致的重绘和回流。 **常用JS** JavaScript作为前端开发的主要语言,其常用知识点涵盖了变量、数据...
因此,使用DOM操作时,应尽量减少对DOM树的改动,或利用文档碎片(`document.createDocumentFragment`)和批量操作来优化。 DOM是Web开发中的基础工具,掌握DOM不仅可以帮助理解网页的结构,还能有效地实现动态交互...
当动态添加大量数据时,考虑使用`document.createDocumentFragment()`创建一个文档碎片,一次性插入到DOM中,以减少重绘和回流的次数,提高性能。 10. **现代JavaScript特性** 使用ES6及以上版本的特性,如模板...
8. **DOM的性能优化**:讲解如何减少DOM操作对页面性能的影响,如使用文档碎片(`document.createDocumentFragment`)和批量操作。 通过学习这些内容,开发者能够熟练掌握JavaScript与DOM的结合,实现丰富的网页...
- **createDocumentFragment**:为了提高性能,可以先创建一个文档碎片,然后一次性插入多个元素,避免频繁操作DOM。 3. **事件处理**: - **事件监听**:使用`addEventListener()`可以为元素添加事件监听器,如`...
此外,现代JavaScript提供了更简洁的DOM操作方式,如使用`template literals`(模板字符串)和`insertAdjacentHTML()`方法,或者利用`fragment`(文档碎片)提高性能。例如: ```javascript var fragment = ...
`createDocumentFragment()`方法用于创建一个文档碎片,可以将多个节点添加到碎片中,然后再一次性添加到文档中。这种方式可以提高性能,因为减少了DOM操作的次数。下面的代码展示了如何使用文档碎片来添加多个新...
2. 使用文档碎片:创建一个文档碎片`document.createDocumentFragment`,在此处进行节点操作,最后再一次性添加到DOM中,可提高效率。 3. 使用CSS选择器:更高效的CSS选择器(如ID选择器)比类选择器更快,因此在...