JS动态移除div

在写这个函数时出现了很多问题,使用下面这种写法时发现只有第一次的移除是准确的,后面会移除第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);				
			}
		}

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值