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;
}

Оставить комментарий