40
Добавление при помощи DocumentFragment
Однако если мы будем использовать DocumentFragment для совершения тех же самых операций, то ситуация изменится. Для начала мы добавим все наши узлы к самому фрагменту (используя имеющийся метод createDocumentFragment).
Самое интересное начинается тогда, когда мы собираемся добавить сами узлы в документ: нам нужно вызвать по одному разу appendChild и cloneNode для всех узлов!
var div = document.getElementsByTagName("div");
var fragment = document.createDocumentFragment();
for ( var e = 0; e < elems.length; e++ ) {
fragment.appendChild( elems[e] );
}
for ( var i = 0; i < div.length; i++ ) {
div[i].appendChild( fragment.cloneNode(true) );
}
При проведении замеров времени можно увидеть следующую картину (табл. 7.2).
Браузер
Нормальный
Fragment
Firefox 3.0.1
90
47
Safari 3.1.2
156
44
Opera 9.51
208
95
IE 6
401
140
IE 7
230
61
IE 8b1
120
40
Таблица 7.2. Сравнение методов работы с DOM-деревом, результаты в миллисекундах