Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > удаление элементов


Автор: GoldFinch 27.5.2009, 11:20
если удалить элемент используя removeChild() то всего дочерние элементы удалятся сами, или их надо рекурсивно обходить и вызывать для них removeChild()?

Автор: Soah 27.5.2009, 11:27
http://javascript.ru/start/dom/search-spec
Цитата

сделаем функцию, чтобы удаляла все дочерние элементы узла. Она будет получать список узлов и по очереди удалять каждый, вот так:

Код

function removeChildren(node) {
    var children = node.childNodes
 
    for(var i=0;i<children.length; i++) {
        var child = children[i]
 
        node.removeChild(child)
    }
}


upd
Код

<script type="text/javascript">
    function foo() {
        //document.getElementById('txtParent').removeChild(document.getElementById('txtChild'));
        //alert(document.getElementById('txtChild'));
        document.getElementById('mainDiv').removeChild(document.getElementById('txtParent'));
        alert(document.getElementById('txtChild'));
    }
</script>

<div id="mainDiv">
    <div id="txtParent">
        <div id="txtChild">123</div>
    </div>
</div>

<input type="button" value="click" onclick="foo()" />


http://www.spravkaweb.ru/javascript/method/r#removeNode
Цитата

Метод удаляет текущий элемент из Web-страницы. 

        {Объект}.removeNode([true|false]);

Метод принимает всего один необязательный параметр, который задает удалять коллекцию childNodes удаляемого элемента страницы (значение true) или нет (значение false, которое используется по умолчанию). 
Метод возвращает ссылку на удаленный элемент. 
Поддерживается IE начиная с 5.0


http://xpoint.ru/forums/programming/javascript/crossbrowser/thread/34282.xhtml#320005
Цитата

Код

HTMLElement.prototype.removeNode = function(removeChildren) {
  if (Boolean(removeChildren))
    return this.parentNode.removeChild(this);
  else {
    var r=document.createRange();
    r.selectNodeContents(this);
    return this.parentNode.replaceChild(r.extractContents(),this);
  }
}


Автор: youri 27.5.2009, 12:27
Цитата(GoldFinch @  27.5.2009,  11:20 Найти цитируемый пост)
то всего дочерние элементы удалятся сами

да

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)