0

我有一个有点棘手的想法来动态创建和删除元素。如果用户单击最后一个元素,则创建新元素。我他单击除最后一个元素之外的任何其他元素,然后删除所有具有较大 id 的元素。这是示例

在我删除一个元素之前,这段代码运行良好。它不取决于我删除元素的方式,如果我在 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] );
};

我什至无法想象任何原因。

4

0 回答 0