js removeChild不起作用

时间:2013-04-10 13:22:50

标签: javascript removechild

我有一点想法动态创建和删除元素。如果用户单击最后一个元素,则会创建新元素。我点击除最后一个元素之外的任何其他元素,然后删除所有id为更大的元素。这是the example

此代码完美无缺,直到我删除一个元素。它不依赖于我删除元素的方式,如果我在Firebug中执行此操作或按下最后一个元素,代码也会停止工作。但是当我通过add_button()函数添加元素时,代码再次开始工作。如果我再次删除任何元素,代码将停止工作。

以下是示例代码

function add_or_remove( id ) {
    var el = document.getElementById('box');
    // let`s check if this is the last button or not
    var last = true;
    var els = el.childNodes;
    for( var i in els )
        if( (els[i].nodeType==1) && (els[i].className) && (els[i].className.indexOf('button')>=0) )
            last = last && (els[i].id<='button_'+id);
    if( last ) {
        add_button();
    } else {
        remove_buttons_after( id );
    };
};

function add_button() {
    var el = document.getElementById('box');
    var id = add_button.id_new;
    var add = document.createElement('a');
    add.className = 'button';
    add.id = 'button_'+id;
    add.href='javascript: add_or_remove(\''+id+'\');';
    add.innerHTML = 'click me!';
    el.appendChild(add);
    add_button.id_new++;
}

function remove_buttons_after( id ) {
    var el = document.getElementById('box');
    var els = el.childNodes;
    var dels = [];
    for( var i in els )
        if( (els[i].nodeType==1) && (els[i].className) && (els[i].className.indexOf('button')>=0) )
            if( els[i].id>'button_'+id )
                dels.push( els[i] );
    for( i=0; i<dels.length; i++ )
        el.removeChild( dels[i] );
};

我甚至无法想象它的任何原因。

0 个答案:

没有答案