--- title: DocumentFragment slug: Web/API/DocumentFragment translation_of: Web/API/DocumentFragment ---
La interfaz DocumentFragment
representa un objeto de documento mínimo que no tiene padre. Se utiliza como una versión ligera de {{domxref("Document")}} que almacena un segmento de una estructura de documento compuesta de nodos como un documento estándar. La gran diferencia se debe al hecho de que el fragmento de documento no forma parte de la estructura de árbol del documento activo. Los cambios realizados en el fragmento no afectan el documento (incluso en {{Glossary("reflow")}}) ni inciden en el rendimiento cuando se realizan cambios. {{InheritanceDiagram}}
DocumentFragment
.Esta interfaz no tiene propiedades específicas, pero hereda las de su padre, {{domxref("Node")}}, e implementa los de la interfaz {{domxref("ParentNode")}}.
DocumentFragment
.DocumentFragment
, o null
si no hay ninguno.DocumentFragment
, o null
si no hay ninguno.unsigned long
que indica cantidad de elementos secundarios que tiene el objeto DocumentFragment
.Esta interfaz hereda los métodos de su padre, {{domxref("Node")}}, e implementa los de la interfaz {{domxref("ParentNode")}}.
DocumentFragment
, en el orden del documento, que coincide con los selectores especificados.DocumentFragment
que coincide con los selectores especificados.DocumentFragment
, en el orden del documento, que coincide con el ID especificado. funcionalmente equivale a {{domxref("Document.getElementById()")}}.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 {{domxref("Node")}} interface methods such as {{domxref("Node.appendChild", "appendChild()")}} or {{domxref("Node.insertBefore", "insertBefore()")}}. Doing this moves the fragment's nodes into the DOM, leaving behind an empty DocumentFragment
. Because all of the nodes are inserted into the document at once, only one reflow and render is triggered instead of potentially one for each node inserted if they were inserted separately.
This interface is also of great use with Web components: {{HTMLElement("template")}} elements contain a DocumentFragment
in their {{domxref("HTMLTemplateElement.content")}} property.
An empty DocumentFragment
can be created using the {{domxref("document.createDocumentFragment()")}} method or the constructor.
<ul id="list"></ul>
var list = document.querySelector('#list') var fruits = ['Apple', 'Orange', 'Banana', 'Melon'] var fragment = new DocumentFragment() fruits.forEach(function (fruit) { var li = document.createElement('li') li.innerHTML = fruit fragment.appendChild(li) }) list.appendChild(fragment)
{{EmbedLiveSample('Example')}}
Specification | Status | Comment |
---|---|---|
{{SpecName('DOM WHATWG', '#interface-documentfragment', 'DocumentFragment')}} | {{Spec2('DOM WHATWG')}} | Added the constructor and the implementation of {{domxref("ParentNode")}}. |
{{SpecName('Selectors API Level 1', '#the-apis', 'DocumentFragment')}} | {{Spec2('Selectors API Level 1')}} | Added the querySelector() and querySelectorAll() methods. |
{{SpecName('DOM3 Core', 'core.html#ID-B63ED1A3', 'DocumentFragment')}} | {{Spec2('DOM3 Core')}} | No change from {{SpecName('DOM2 Core')}} |
{{SpecName('DOM2 Core', 'core.html#ID-B63ED1A3', 'DocumentFragment')}} | {{Spec2('DOM2 Core')}} | No change from {{SpecName('DOM1')}} |
{{SpecName('DOM1', 'level-one-core.html#ID-B63ED1A3', 'DocumentFragment')}} | {{Spec2('DOM1')}} | Initial definition |
{{Compat("api.DocumentFragment")}}