HTML DOM, JavaScript для добавления/удаления рядов таблицы (часть 2)
posted in JavaScirpt |Я обещал рассказать как улучшить функцию удаления ряда таблицы, этим сегодня и займемся. Итак мы уже знаем, что у браузеров есть отличия в построении DOM дерева. Мы увидели, что Firefox и Safari создают дополнительный текстовый узел «\n» для каждого переноса строки в документе, есть два пути решения проблемы: 1й — удалять такие узлы, 2й — просто их пропускать.
1. Удаление «\n»
function DelLastRow(tid) { var myTbl=document.getElementById(tid); var deltr=myTbl.lastChild; while (deltr.nodeType==3) { myTbl.removeChild(deltr); deltr=myTbl.lastChild; } myTbl.removeChild(deltr); }
2. Пропуск «\n»
function DelLastRow(tid) { var myTbl=document.getElementById(tid); var deltr=myTbl.lastChild; while (deltr.nodeType==3) { deltr=deltr.previousSibling; } myTbl.removeChild(deltr); }
В последней функции мы использовали previousSibling — это ссылка на предыдущий соседний узел, также можно использовать nextSibling, чтоб перейти на следующий узел-сосед. В приницпе в функции, которая печатала DOM дерево, мі могли испозовать другой цикл: ‘while’ вместо of ‘for’:
while (cur) { ... cur=cur.nextSibling; }