Ich habe über Dokumentfragmente und DOM-Reflow gelesen und mich gefragt, wie document.createDocumentFragmentunterschiedlich es ist, document.createElementda es so aussieht, als ob keines von beiden im DOM vorhanden ist, bis ich sie an ein DOM-Element anhänge.
Ich habe einen Test gemacht (siehe unten) und alle haben genau die gleiche Zeit gebraucht (ca. 95 ms). Vermutlich könnte dies daran liegen, dass auf keines der Elemente ein Stil angewendet wurde, sodass möglicherweise kein Reflow möglich ist.
Wie auch immer, basierend auf dem folgenden Beispiel, warum sollte ich createDocumentFragmentanstelle des createElementEinfügens in das DOM verwenden und was ist der Unterschied zwischen den beiden.
var htmz = "<ul>";
for (var i = 0; i < 2001; i++) {
htmz += '<li><a href="#">link ' + i + '</a></li>';
}
htmz += '<ul>';
//createDocumentFragment
console.time('first');
var div = document.createElement("div");
div.innerHTML = htmz;
var fragment = document.createDocumentFragment();
while (div.firstChild) {
fragment.appendChild(div.firstChild);
}
$('#first').append(fragment);
console.timeEnd('first');
//createElement
console.time('second');
var span = document.createElement("span");
span.innerHTML = htmz;
$('#second').append(span);
console.timeEnd('second');
//jQuery
console.time('third');
$('#third').append(htmz);
console.timeEnd('third');