`

document的createDocumentFragment()方法

 
阅读更多

文章源自:http://www.cnblogs.com/yunfour/archive/2011/06/21/2085911.html

 

在《javascript高级程序设计》一书的6.3.5:创建和操作节点一节中,介绍了几种动态创建html节点的方法,其中有以下几种常见方法:

· crateAttribute(name):        用指定名称name创建特性节点

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

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

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

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

其中最感兴趣且以前没有接触过的一个方法是createComment(text)方法,书中介绍说:在更新少量节点的时候可以直接向 document.body节点中添加,但是当要向document中添加大量数据是,如果直接添加这些新节点,这个过程非常缓慢,因为每添加一个节点都 会调用父节点的appendChild()方法,为了解决这个问题,可以创建一个文档碎片,把所有的新节点附加其上,然后把文档碎片一次性添加到 document中。

假如想创建十个段落,使用常规的方式可能会写出这样的代码:

for(var i = 0 ; i < 10; i ++) {
    var p = document.createElement("p");
    var oTxt = document.createTextNode("段落" + i);
    p.appendChild(oTxt);
    document.body.appendChild(p);
}

 当然,这段代码运行是没有问题,但是他调用了十次document.body.appendChild(),每次都要产生一次页面渲染。这时碎片就十分有用了:

var oFragment = document.createDocumentFragment();

for(var i = 0 ; i < 10; i ++) {
    var p = document.createElement("p");
    var oTxt = document.createTextNode("段落" + i);
    p.appendChild(oTxt);
    oFragment.appendChild(p);
}
document.body.appendChild(oFragment);

 在这段代码中,每个新的<p />元素都被添加到文档碎片中,然后这个碎片被作为参数传递给appendChild()。这里对appendChild()的调用实际上并不是把 文档碎片本省追加到body元素中,而是仅仅追加碎片中的子节点,然后可以看到明显的性能提升,document.body.appenChild()一 次替代十次,这意味着只需要进行一个内容渲染刷新。

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    JavaScript性能优化 创建文档碎片(document.createDocumentFragment)

    在探讨`document.createDocumentFragment()`方法之前,我们首先需要理解浏览器在处理DOM(文档对象模型)节点插入时的基本行为。DOM是HTML或XML文档的编程接口,它允许程序和脚本动态地访问、更新文档的内容、结构和...

    关于javascript document.createDocumentFragment()

    `document.createDocumentFragment()`是JavaScript中的一个非常有用的API,它允许开发者在不实际修改DOM树的情况下构建和操作一组节点。这个方法返回一个无父节点的`DocumentFragment`对象,可以被视为一个临时的、...

    浅析document.createDocumentFragment()与js效率

    使用document.createDocumentFragment()方法可以创建一个DocumentFragment对象。创建后,你可以将多个元素添加到该对象中。一旦所有的操作都完成,你可以将DocumentFragment一次性地附加到DOM树上。与逐个添加节点到...

    document方法大全

    本文将深入探讨`document`对象的各种方法,帮助开发者全面理解并熟练运用这些方法来创建交互式和动态的Web页面。 一、获取元素方法 1. `getElementById(id)`:通过ID获取元素,是最常用的方法之一。 2. `...

    document 文挡对象详解

    - `document.createDocumentFragment()`:创建一个不附加到文档的文档片段,用于存储和操作元素集合。 - `innerHTML`:获取或设置元素及其所有子元素的HTML。 - `outerHTML`:获取或设置元素的HTML,包括其开始...

    createElement与createDocumentFragment的点点区别小结

    网上可以搜到的大部分都是说使用createDocumentFragment主要是因为避免因createElement多次添加到document.body引起的效率问题,比如: 代码如下: var arrText=[“1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”...

    xmldom属性与方法详解[参照].pdf

    `xmlDocument.createDocumentFragment()` 返回一个空的文件片断,可以用于存储将要插入XML文档的一组节点。使用插入方法如`insertBefore`、`replaceChild`或`appendChild`将片段插入文档。 8. `createElement` ...

    html_document对象

    - 虽非`document`对象直接方法,但`document.createElement('script')`可用于动态加载JavaScript,实现异步数据请求,是Ajax技术的基础。 通过巧妙地运用`document`对象的各种方法和属性,开发者可以实现网页的...

    【ASP.NET编程知识】ASP.NET XmlDocument类详解.docx

    XMLDocument 类提供了多种方法和属性来操作和访问 XML 文档。 一、属性 ASP.NET XmlDocument 类提供了多种属性来访问和操作 XML 文档。这些属性包括: * Attributes:获取一个 XmlAttributeCollection,它包含该...

    document对象

    * createDocumentFragment:创建文档 fragment 对象。 * createElement:以指定标签名称创建元素对象。 * createTextNode:以指定文本创建文本节点对象。 * execCommand:执行命令,如插入、删除、格式化等。 * ...

    比较详细的XMLDOM对象方法详解第1/2页

    createDocumentFragment方法 **作用:** 此方法用于创建一个空白的文档片段对象。 **基本语法:** ```javascript xmlDocument.createDocumentFragment(); ``` **说明:** 新创建的文档片段对象并不自动成为文档...

    一些高性能的Javascript代码.doc

    var frag = document.createDocumentFragment(); for (var i = 0; i ; i++) { var el = document.createElement('p'); el.innerHTML = i; frag.appendChild(el); } document.body.appendChild(frag); ``` 2...

    js中的DocumentFragment1

    创建 DocumentFragment 可以使用 document.createDocumentFragment 方法或者构造函数来创建一个空的 DocumentFragment。 DocumentFragment 的属性继承自 Node,並补充了 ParentNode 接口中的属性。例如,ParentNode...

    JavaScript window.document的属性、方法和事件小结

    JavaScript中的`window.document`是浏览器环境中访问HTML文档的主要接口,它包含了访问和操作网页内容的各种属性、方法和事件。在JavaScript编程中,`window`对象是全局对象,而`document`则是`window`下的一个子...

    documen对象参考手册使用详解

    10. **DOM遍历与操作**:`document.createDocumentFragment()`创建一个文档片段,可用来批量添加元素而不立即触发重绘。`Node`接口提供了如`appendChild()`, `removeChild()`, `replaceChild()`等方法,用于操作DOM...

    dom-lite:一个小的DOM实现,其中实现了文档中的大多数DOM属性和方法

    一个小的DOM实现,其中实现了文档中的大多数DOM属性和方法。 例子 var document = require ( "dom-lite" ) . document ; var el = document . createElement ( "h1" ) ; el . id = 123 ; el . className = "large" ...

Global site tag (gtag.js) - Google Analytics