createDocumentFragment有什麼做用呢?html
調用屢次document.body.append(),每次都要刷新頁面一次。效率也就大打折扣了,而使用document_createDocumentFragment()建立一個文檔碎片,把全部的新結點附加在其上,而後把文檔碎片的內容一次性添加到document中,這也就只須要一次頁面刷新就可。node
他支持如下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.app
下面是2段測試程序:測試
var d1 = new Date();spa
//建立十個段落,常規的方式orm
for(var i = 0 ; i < 1000; i ++) {htm
var p = document_createElement_x_x_x("p");blog
var oTxt = document_createTextNode("段落" + i);ip
p.a(oTxt);rem
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