JavaScript/DOM/Document/createDocumentFragment
Aus SELFHTML-Wiki
< JavaScript | DOM | Document(Weitergeleitet von CreateDocumentFragment)
Die Methode Document.createDocumentFragment() erzeugt ein neues DocumentFragment-Objekt im aktuellen Dokument.
Syntax
element = Document.createDocumentFragment()
Die Methode erwartet keine Parameter. Das erzeugte DocumentFragment ist leer und kann nun mit Elementen gefüllt werden. Da das DocumentFragment noch nicht Teil des DOM ist, führt ein Hinzufügen von Elementen nicht zu einem Neuzeichnen der Browser-Darstellung.
Anwendungsbeispiel
Beispiel
<main id="main">
<table id="personen">
<thead>
<tr>
<th>Name</th><th>Vorname</th><th>Geburtsdatum</th>
</tr>
</thead>
<tbody/>
</table>
<button id="addPerson">Neue Person</button>
</main>
document.addEventListener('DOMContentLoaded', function () {
let element = document.getElementById ('addPerson');
element.addEventListener ('click', addPersonenRow);
}
function addPersonenRow() {
let frag = document.createDocumentFragment();
let row = frag.appendChild(document.createElement('tr'));
let col1 = row.appendChild(document.createElement('td'));
let col2 = row.appendChild(document.createElement('td'));
let col3 = row.appendChild(document.createElement('td'));
col1.innerHTML = "<input type='text' name='nachname'>";
col2.innerHTML = "<input type='text' name='vorname'>";
col3.innerHTML = "<input type='text' name='gebDat'>";
document.querySelector('#personen').appendChild(frag);
// frag.childElementCount ist jetzt 0.
}
Nach dem Laden der Seite wird auf das DOMContentLoaded-Ereignis reagiert und dem Button mit addEventListener eine click-Funktionalität hinzugefügt.
Die MethodeWenn Sie nun auf den Button klicken, wird mit
document.createDocumentFragment()
ein Container für eine neue Tabellenzeile erzeugt und darin ein tr Element und drei td Elemente angelegt. Mittels Zuweisung an innerHTML werden in den Tabellenzellen Eingabefelder erstellt. Die so erzeugte Tabellenzeile wird nun durch Aufruf von appendChild mit einem Aufruf dem DOM hinzugefügt.appendChild()
gibt ihr Argument zurück, was im Fall eines DocumentFragment bedeutet, dass damit nichts mehr anzufangen ist - die Elemente darin sind ins DOM verschoben worden.