JavaScript创建文档片段节点|Document createDocumentFragment() 方法
定义与用法
createdocumentfragment()方法创建了一虚拟的节点对象,节点对象包含所有属性和方法。
当你想提取文档的一部分,改变,增加,或删除某些内容及插入到文档末尾可以使用createDocumentFragment() 方法。
你也可以使用文档的文档对象来执行这些变化,但要防止文件结构被破坏,createDocumentFragment() 方法可以更安全改变文档的结构及节点。
语法格式
document.createDocumentFragment()
示例代码
创建一个 documentFragment 节点:
var d=document.createDocumentFragment();
d.appendChild(document.getElementsByTagName("LI")[0]);
d.childNodes[0].childNodes[0].nodeValue="Milk";
document.getElementsByTagName("UL")[0].appendChild(d);
修改前:
- Coffee
- Tea
修改后:
- Tea
- Milk
浏览器支持
方法 | |||||
---|---|---|---|---|---|
createDocumentFragment() | Yes | Yes | Yes | Yes | Yes |
所有主要浏览器都支持 createDocumentFragment() 方法
返回值
类型 | 描述 |
---|---|
DocumentFragment 对象 | 创建文档片段对象 |
技术细节
DOM 版本 | Core Level 1 Document Object |
---|
createElement和createDocumentFragment区别
共同点:
- 添加子元素后返回值都是新添加的子元素,因此,可利用
innerHTML
为createDocumentFragment
添加子元素。 - 都可以通过
appendChild
添加子元素,且子元素必须是node
类型,不能为文本。 - 若添加的子元素是文档中存在的元素,则通过
appendChild
在为其添加子元素时,会从文档中删除之前存在的元素。
区别:
createElement
创建的是元素节点,createDocumentFragment
创建的是文档碎片。- 通过
createElement
新建元素必须指定元素tagName
,因为其可用innerHTML
添加子元素。通过createDocumentFragment
则不必。 - 连续将通过
createElement
新建的元素添加到其他元素上,则只会将新建的元素添加到最后一个其他元素上。 - 而连续将通过
createDocumentFragment
新建的元素通过appendChild
添加到其他元素上,则只会将新建的元素添加到第一个其他元素上。 - 通过
createElement
创建的元素是直接插入到文档中,而通过createDocumentFragment
创建的元素插入到文档中的是他的子元素。 - 通过
createElement
创建的元素插入文档后,还可以取到创建时的返回值,而createDocumentFragment
创建的元素插入到文档后,就不能访问创建时的返回值了,相当于把自己创建的文档片段直接挪到文档中了。