I reading about document fragments und DOM Reflow war und fragte sich, wie document.createDocumentFragment
von document.createElement
unterschied, da es wie im DOM existieren keiner von ihnen sieht, bis ich sie zu einem DOM-Element anhängen.Sollte ich document.createDocumentFragment oder document.createElement
Ich habe einen Test (unten) und alle von ihnen dauerte genau die gleiche Zeit (ca. 95ms). Vermutlich könnte das daran liegen, dass auf keines der Elemente ein Style angewendet wird, also möglicherweise kein Reflow.
Wie auch immer, basierend auf dem folgenden Beispiel, warum sollte ich createDocumentFragment
anstelle von createElement
beim Einfügen 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');
Das klingt wie ein Job für jsperf. Ja? Nein? – Nenotlep