在写这个函数时出现了很多问题,使用下面这种写法时发现只有第一次的移除是准确的,后面会移除第i-1个盒子。
function remove(){
var yes = document.getElementsByClassName('yes');
var body = document.getElementById('body');
var num = body.children;
function noman(man3,man1,i){
man1[i].onclick = function(){
man3.removeChild(man3.childNodes[i]); //移除body下相应的第i个子元素
}
}
for(var i=num.length-1;i>=0;i--){
//alert(i); //输出的i会自动减1,跟点击的盒子不匹配
noman(body,yes,i);
}
}
原因还不知道是为什么,先记录下来。后面改了另外一种写法,就没问题了。
原因更新:因为删除盒子后,盒子数量减一,因此 for 自减一且盒子长度也减一,就导致 i 跟对应盒子不匹配了。
function remove(){
var yes = document.getElementsByClassName('yes');
var body = document.getElementById('body');
var num = body.children;
function noman(man3,man1,i){
man1[i].onclick = function(){
man3.removeChild(this.parentNode); //修改成移除被点击盒子的父级元素
}
}
for(var i=num.length-1;i>=0;i--){
//alert(i); //输出的i跟点击的盒子匹配
noman(body,yes,i);
}
}