我有一点想法动态创建和删除元素。如果用户单击最后一个元素,则会创建新元素。我点击除最后一个元素之外的任何其他元素,然后删除所有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] );
};
我甚至无法想象它的任何原因。