JavaScript. Подробное руководство, 6-е издание, стр. 212
<b> else parent.insertBefore(child, parent.childNodes[n]);</b><b>}</b>Если метод
<b>appendChild()</b><b>insertBefore()</b><b>appendChild().</b>Пример 15.4. Сортировка строк таблицы
<b>// Сортирует строки в первом элементе <tbody> указанной таблицы по значениям </b><b>// n-й ячейки в каждой строке. Использует функцию сравнения, если она указана.</b><b>// Иначе сортировка выполняется в алфавитном порядке, </b><b>function sort rows(table, n, comparator) {</b><b> var tbody = table.tBodies[0]; // Первый <tbody>; возможно созданный неявно </b><b> var rows = tbody.getElementsByTagName("tr"); // Все строки в tbody </b><b> rows = Array.prototype.slice.call(rows,0); // Скопировать в массив</b><b> // Отсортировать строки по содержимому n-го элемента <td> </b><b> rows.sort(function(row1,row2) {</b><b> var cell1 = row1.getElementsByTagName("td")[n]; // n-e ячейки </b><b> var cell2 = row2.getElementsByTagName("td")[n]; // двух строк </b><b> var vail = celH.textContent || celH.innerText; // текстовое содерж. </b><b> var val2 = cell2.textContent || cell2.innerText; // двух ячеек </b><b> if (comparator) return comparator(val1, val2); // Сравнить! </b><b> if (vail < val2) return -1; </b><b> else if (vail > val2) return 1; </b><b> else return 0;</b><b> });</b><b> // Добавить строки в конец tbody в отсортированном порядке.</b><b> // При этом строки автоматически будут удалены из их текущих позиций,</b><b> // благодаря чему отпадает необходимость явно удалять их. Если <tbody> содержит </b><b> // какие-либо другие узлы, отличные от элементов <tr>, эти узлы "всплывут" наверх. </b><b> for(var і = 0; і < rows.length; i++) tbody.appendChild(rows[i]);</b><b>}</b><b>// Отыскивает в таблице элементы <th> (предполагается, что в таблице существует </b><b>// только одна строка с ними) и добавляет в них возможность обработки щелчка мышью,</b><b>// чтобы щелчок на заголовке столбца вызывал сортировку таблицы по этому столбцу.</b><b>function makeSortable(table) {</b><b> var headers = table.getElementsByTagName("th"); </b><b> for(var і = 0; і < headers.length; i++) {</b><b> (function(n) { // Чтобы создать локальную область видимости </b><b> headers[i].onclick = function() { sortrows(table, n); };</b><b> }(i)); // Присвоить значение і локальной переменной n</b><b> }</b><b>}</b>15.6.3. Удаление и замена узлов
Метод
<b>removeChild()</b><b>n.parentNode.removeChild(n);</b>Метод
<b>replaceChild()</b><b>n.parentNode.replaceChild(document.createTextNode("[ ИСПРАВЛЕНО ]"). n);</b>Следующая функция демонстрирует еще один способ применения метода
<b>replaceChild():</b><b>// Замещает узел n новым элементом <b> и делает узел п его дочерним элементом, </b><b>function embolden(n) {</b><b> // Если вместо узла получена строка, интерпретировать ее как значение </b><b> // атрибута id элемента</b><b> if (typeof n == "string") n = document.getElementByld(n);</b><b> var parent = n.parentNode; // Ссылка на родителя элемента n</b><b> var b = document.сreateElement("b"); // Создать элемент <b></b><b> parent.replaceChild(b, n); // Заменить n элементом <b></b>