web api interface
DocumentFragment
The DocumentFragment interface represents a minimal document object that has no parent.
It is used as a lightweight version of Document that stores a segment of a document structure comprised of nodes just like a standard document. The key difference is due to the fact that the document fragment isn’t part of the active document tree structure. Changes made to the fragment don’t affect the document.
Constructor
DocumentFragment()- : Creates and returns a new
DocumentFragmentobject.
- : Creates and returns a new
Instance properties
This interface has no specific properties, but inherits those of its parent, Node.
childElementCountRead only- : Returns the amount of child
elementstheDocumentFragmenthas.
- : Returns the amount of child
childrenRead only- : Returns a live
HTMLCollectioncontaining all objects of typeElementthat are children of theDocumentFragmentobject.
- : Returns a live
firstElementChildRead only- : Returns the
Elementthat is the first child of theDocumentFragmentobject, ornullif there is none.
- : Returns the
lastElementChildRead only- : Returns the
Elementthat is the last child of theDocumentFragmentobject, ornullif there is none.
- : Returns the
Instance methods
This interface inherits the methods of its parent, Node.
append()- : Inserts a set of
Nodeobjects or strings after the last child of the document fragment.
- : Inserts a set of
prepend()- : Inserts a set of
Nodeobjects or strings before the first child of the document fragment.
- : Inserts a set of
querySelector()- : Returns the first
Elementnode within theDocumentFragment, in document order, that matches the specified selectors.
- : Returns the first
querySelectorAll()moveBefore()- : Moves a given
Nodeinside the invokingDocumentFragmentas a direct child, before a given reference node, without removing and then inserting the node.
- : Moves a given
replaceChildren()- : Replaces the existing children of a
DocumentFragmentwith a specified new set of children.
- : Replaces the existing children of a
getElementById()- : Returns the first
Elementnode within theDocumentFragment, in document order, that matches the specified ID. Functionally equivalent togetElementById().
- : Returns the first
Usage notes
A common use for DocumentFragment is to create one, assemble a DOM subtree within it, then append or insert the fragment into the DOM using Node interface methods such as appendChild(), append(), or insertBefore(). Doing this moves the fragment’s nodes into the DOM, leaving behind an empty DocumentFragment.
This interface is also of great use with Web components: <template> elements contain a DocumentFragment in their content property.
An empty DocumentFragment can be created using the createDocumentFragment() method or the constructor.
Performance
The performance benefit of DocumentFragment is often overstated. In fact, in some engines, using a DocumentFragment is slower than appending to the document in a loop as demonstrated in this benchmark. However, the difference between these examples is so marginal that it’s better to optimize for readability than performance.
Example
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);