document.createDocumentFragment()的用法


createDocumentFragment有什么作用呢?

    調用多次document.body.append(),每次都要刷新頁面一次。效率也就大打折扣了,而使用document_createDocumentFragment()創建一個文檔碎片,把所有的新結點附加在其上,然后把文檔碎片的內容一次性添加到document中,這也就只需要一次頁面刷新就可。

他支持以下DOM2方法: 
a, cloneNode, hasAttributes, hasChildNodes, insertBefore, normalize, removeChild, replaceChild. 
也支持以下DOM2屬性: 
attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling, textContent.

下面是2段測試程序:

 

var d1 = new Date();

//創建十個段落,常規的方式

for(var i = 0 ; i < 1000; i ++) {

    var p = document_createElement_x_x_x("p");

    var oTxt = document_createTextNode("段落" + i);

    p.a(oTxt);

    document.body.a(p);

}

var d2 = new Date();

document.write("第一次創建需要的時間:"+(d2.getTime()-d1.getTime()));

 

 

//使用了createDocumentFragment()的程序

var d3 = new Date();

var pFragment = document_createDocumentFragment();

for(var i = 0 ; i < 1000; i ++) {

    var p = document_createElement_x_x_x("p");

    var oTxt = document_createTextNode("段落" + i);

    p.a(oTxt);

    pFragment.a(p);

}

document.body.a(pFragment);

var d4 = new Date();

document.write("第2次創建需要的時間:"+(d4.getTime()-d3.getTime()));

 

注:document_createDocumentFragment()說白了就是為了節約使用DOM。每次JavaScript對DOM的操作都會改變頁面的變現,並重新刷新整個頁面,從而消耗了大量的時間。為解決這個問題,可以創建一個文檔碎片,把所有的新節點附加其上,然后把文檔碎片的內容一次性添加到document中。

本文摘自《莫塵的博客》,鏈接地址:http://blog.sina.com.cn/s/blog_667a8c2f010113zw.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM