createDocumentFragment作用?
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()));
createDocumentFragment()就是为了节约使用DOM,每次JavaScript对DOM的操作都会改变页面的变现,并重新刷新整个页面,从而消耗了大量的时间。为解决这个问题,可以创建一个文档碎片,把所有的新节点附加其上,然后把文档碎片的内容一次性添加到document中。
相关推荐
### JavaScript性能优化之创建文档碎片(document.createDocumentFragment) 在探讨`document.createDocumentFragment()`方法之前,我们首先需要理解浏览器在处理DOM(文档对象模型)节点插入时的基本行为。DOM是HTML...
使用document.createDocumentFragment()方法可以创建一个DocumentFragment对象。创建后,你可以将多个元素添加到该对象中。一旦所有的操作都完成,你可以将DocumentFragment一次性地附加到DOM树上。与逐个添加节点到...
`document.createDocumentFragment()`是JavaScript中的一个非常有用的API,它允许开发者在不实际修改DOM树的情况下构建和操作一组节点。这个方法返回一个无父节点的`DocumentFragment`对象,可以被视为一个临时的、...
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); ``` 1.1.2 ...
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...
网上可以搜到的大部分都是说使用createDocumentFragment主要是因为避免因createElement多次添加到document.body引起的效率问题,比如: 代码如下: var arrText=[“1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”...
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); ``` 通过...
代码如下: function asyncInnerHTML(HTML, callback) { var temp = document.createElement(‘div’), frag = document.createDocumentFragment(); temp[removed] = HTML;//要加入的内容先放到这里。 (function(){ ...
- `document.createDocumentFragment()`:创建一个不附加到文档的文档片段,用于存储和操作元素集合。 - `innerHTML`:获取或设置元素及其所有子元素的HTML。 - `outerHTML`:获取或设置元素的HTML,包括其开始...
练习您的工作是创建一个代表财务顾问的对象,并具有以下属性和方法。 公司(可枚举,可写,财产)专业(可枚举,可写,财产)名称... 遍历顾问的投资组合,并使用document.createDocumentFragment和document.create
createDocumentFragment ( ) ; var text1 = document . createTextNode ( "hello" ) ; var text2 = document . createTextNode ( " world" ) ; fragment . appendChild ( text1 ) ; fragment . appendChild
将较大的阻塞循环分解为较小的块,这些块会阻塞一段指定的时间 创建此表的原因是由于呈现了一些较大的表,这些表阻塞了UI。 块使您可以指定自己愿意的时间,然后再回到事件循环以允许其他进程运行。 // Create a ...
后来是一技术群问到以下一段代码: 代码... var df = document.createDocumentFragment(); while (d.firstChild) df.appendChild(d.firstChild); return df; } 大概的原理都明白,比较困惑的是为什么要用 document.cre
`createDocumentFragment`是一个非常实用的工具,可以帮助我们优化性能。本文将深入探讨Vue中`createDocumentFragment`的使用方法。 首先,让我们了解为什么直接通过循环插入大量元素是低效的。假设我们需要在一个...