DocumentFragment
Baseline 广泛可用 *
DocumentFragment 接口表示一个最小的文档对象,它没有父节点。
它被用作一个轻量级的 Document 版本,用于存储一个由节点组成的文档结构片段,就像标准的文档一样。关键区别在于文档片段不属于活动文档树结构。对片段所做的更改不会影响文档。
构造函数
DocumentFragment()-
创建并返回一个新的
DocumentFragment对象。
实例属性
此接口没有特定属性,但继承了其父接口 Node 的属性。
DocumentFragment.childElementCount只读-
返回
DocumentFragment中子元素的数量。 DocumentFragment.children只读-
返回一个包含
DocumentFragment对象的所有类型为Element的子节点的实时HTMLCollection。 DocumentFragment.firstElementChild只读-
返回
DocumentFragment对象的第一个子Element,如果没有则返回null。 DocumentFragment.lastElementChild只读-
返回
DocumentFragment对象的最后一个子Element,如果没有则返回null。
实例方法
此接口继承了其父接口 Node 的方法。
DocumentFragment.append()-
在文档片段的最后一个子节点之后插入一组
Node对象或字符串。 DocumentFragment.prepend()-
在文档片段的第一个子节点之前插入一组
Node对象或字符串。 DocumentFragment.querySelector()-
在文档片段中,按文档顺序查找与指定选择器匹配的第一个
Element节点。 DocumentFragment.querySelectorAll()DocumentFragment.moveBefore()-
将给定的
Node作为直接子节点移动到调用它的DocumentFragment中,位于给定的参考节点之前,而无需先移除再插入该节点。 DocumentFragment.replaceChildren()-
用指定的新子节点集替换
DocumentFragment中现有的子节点。 DocumentFragment.getElementById()-
在文档片段中,按文档顺序查找与指定 ID 匹配的第一个
Element节点。功能上等同于Document.getElementById()。
用法说明
DocumentFragment 的一个常见用途是创建一个片段,在其内部组装一个 DOM 子树,然后使用 Node 接口方法(如 appendChild()、append() 或 insertBefore())将该片段追加或插入到 DOM 中。这样做会将片段的节点移入 DOM,留下一个空的 DocumentFragment。
此接口对于 Web Components 也非常有用:<template> 元素在其 HTMLTemplateElement.content 属性中包含一个 DocumentFragment。
可以使用 document.createDocumentFragment() 方法或构造函数创建一个空的 DocumentFragment。
性能
DocumentFragment 的性能优势常常被夸大。事实上,在某些引擎中,使用 DocumentFragment 比在循环中直接追加到文档中更慢,正如此基准测试所示。然而,这些示例之间的差异如此微小,以至于最好优化可读性而不是性能。
示例
HTML
<ul></ul>
JavaScript
const ul = document.querySelector("ul");
const fruits = ["Apple", "Orange", "Banana", "Melon"];
const fragment = new DocumentFragment();
for (const fruit of fruits) {
const li = document.createElement("li");
li.textContent = fruit;
fragment.append(li);
}
ul.append(fragment);
结果
规范
| 规范 |
|---|
| DOM # interface-documentfragment |
浏览器兼容性
加载中…