Объект DocumentFragment – это специальный тип узла, который отсутствует в са_ мом документе и используется лишь как временный контейнер для хранения последовательности узлов, что позволяет манипулировать этими узлами как
15.8. Добавление содержимого в документ
единым объектом. Когда выполняется вставка объекта DocumentFragment в доку_ мент (методом appendChild(), insertBefore() или replaceChild() объекта Node), вставляется не сам объект DocumentFragment, а каждый из его потомков.
Создается объект DocumentFragment методом document.createDocumentFragment(). До_ бавлять узлы в объект DocumentFragment можно методом appendChild() или любым другим, относящимся к объекту Node. Затем, когда все эти узлы будут готовы к вставке в документ, добавляется сам объект DocumentFragment. После операции вставки в документ фрагмент пустеет, и его содержимое нельзя использовать по_ вторно, если предварительно не добавить в него новые узлы_потомки. Этот про_ цесс демонстрируется в примере 15.8. Здесь определяется функция reverse(), которая использует объект DocumentFragment в качестве временного хранилища при изменении порядка следования дочерних узлов на обратный.
Пример 15.8. Использование объекта DocmentFragment
// Изменяет порядок следование дочерних узлов на обратный function reverse(n) {
// Создать пустой объект DocumentFragment, который будет
// использоваться как временное хранилище
var f = document.createDocumentFragment( );
// Обойти все дочерние узлы в обратном порядке и переместить
// их во временное хранилище.
// Последний дочерний узел элемента n станет первым дочерним
// узлом элемента f, и наоборот.
// Обратите внимание: добавление узла в f автоматически вызывает
// его удаление из n.
while(n.lastChild) f.appendChild(n.lastChild);
// В заключение переместить дочерние узлы из f обратно в n за один шаг. n.appendChild(f);