23
Май
2008
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;
}