JavaScript. Подробное руководство, 6-е издание, стр. 213
<b> b.appendChild(n); // Сделать n дочерним элементом элемента <b></b><b>}</b>В разделе 15.5.1 было представлено свойство
<b>outerHTML</b><b>innerHTML</b><b>Element.prototype</b><b>removeChild()</b><b>cloneNode().</b>Пример 15.5. Реализация свойства outerHTML с помощью свойства innerHTML
<b>И Реализация свойства outerHTML для броузеров, не поддерживающих его.</b><b>// Предполагается, что броузер поддерживает свойство innerHTML, возможность </b><b>// расширения Element.prototype и позволяет определять методы доступа к свойствам. </b><b>(function() {</b><b> // Если свойство outerHTML уже имеется - просто вернуть управление </b><b> if (document.createElement("div").outerHTML) return;</b><b> // Возвращает окружающую разметку с содержимым элемента,</b><b> // на который указывает ссылка this </b><b> function outerHTMLGetter() {</b><b> var container = document.createElement("div"); </b><b> // Фиктивный элемент </b><b> container.appendChild(this.cloneNode(true)); // Копировать this</b><b> // в фиктивный элемент</b><b> return container.innerHTML; // Вернуть содержимое</b><b> // фиктивного элемента</b><b> }</b><b> // Замещает указанным значением value содержимое элемента, на который </b><b> // указывает ссылка this, вместе с окружающей разметкой HTML </b><b> function outerHTMLSetter(value) {</b><b> // Создать фиктивный элемент и сохранить в нем указанное значение </b><b> var container = document.createElement("div"); </b><b> container.innerHTML = value;</b><b> // Переместить все узлы из фиктивного элемента в документ </b><b> while(container.firstChild) // Продолжать, пока в контейнере</b><b> // не останется дочерних элементов</b><b> this.parentNode.insertBefore(container.firstChild, this);</b><b> // И удалить замещаемый узел </b><b> this.parentNode.removeChild(this);</b><b> }</b><b> // Использовать эти две функции в качестве методов чтения и записи свойства outerHTML </b><b> // всех объектов Element. Использовать метод Object.defineProperty, если имеется,</b><b> // в противном случае использовать __defineGetter__ и __defineSetter__.</b><b> if (Object.defineProperty) {</b><b> Object.defineProperty(Element.prototype,</b><b> "outerHTML", </b><b> { get: outerHTMLGetter,</b><b> set: outerHTMLSetter, </b><b> enumerable: false, </b><b> configurable: true</b><b> }):</b><b> }</b><b> else {</b><b> Element.prototype.__defineGetter__("outerHTML", outerHTMLGetter); </b><b> Element.prototype.__defineSetter__("outerHTML", outerHTMLSetter);</b><b> }</b><b>}());</b>15.6.4. Использование объектов DocumentFragment
Объекты
<b>DocumentFragment</b><b>Node</b><b>DocumentFragment</b><b>var frag = document.createDocumentFragment();</b>Как и узел
<b>Document</b><b>DocumentFragment</b><b>parentNode</b><b>Element</b><b>DocumentFragment</b><b>appendChild(), insertBefore()</b>