Программирование > JavaScript & JScript
Удаление узла и всех его детей
dub:
Пытаюсь написать функцию deleteNode() для удаления узла и всех его прямых и опосредованных детей. По идее эта функция должна вызываться рекурсивно, если дети есть, для каждого из детей. А если у них есть дети, то для каждого из их детей. Когда же у узла не остается детей, то удалять его методом removeNode(). Как бы это сотворить?
mike:
Ну и в чем проблема, собственно?
dub:
mike
Хороший вопрос. Просто не захотел выкладывать то, что не хочет работать. Вот оно:
--- Код: ---function deleteNode(object) {
var i;
if (object.tagName && object.childNodes) {
for(i=0; i
mike:
А корневой узел в твоем варианте удаляется?
Думаю, вот в чем проблема. После удаления потомков нужно удалить сам узел, а у тебя этого нет. Проверь этот вариант:
--- Код: ---
function deleteNode(object) {
var i;
if (object.tagName && object.childNodes) {
for(i=0; i
dub:
mike
Так пробовал. Вот что получается. Если у корневого узла двое детей, каждый из которых имеет своих детей, то прохождение вглубь происходит только один раз, а после этого удаляется корневой узел. Второй же ребенок зависает. Пример: необходимо удалить строку таблицы:
--- Код: ---
1
2
--- Конец кода ---
После применения такой функции имеем вот что:
--- Код: ---2
--- Конец кода ---
Вот
--- Цитировать ---в чем проблема, собственно
--- Конец цитаты ---
Навигация
Перейти к полной версии