javascript---删除元素所引起的 对于NodeList的理解

今天开发中遇到的一个比较诡异的问题,让我初窥了DOM的NodeList 不知道我的理解对不对
先说需求:
一个ul里面有若干个li,数目不定,我需要删除除去最后一个的 前面所有的 li;
这样的需求 第一直觉 在ul里面循环 逐个删除
代码如下:
var li = ul.getElementsByTagName('li');
var len = li.length;
for(var i=0 ; i< len-1; i++){
   ul.removeChild(li[i])
}

但实际上这样是不行的,行不通~~

原因:当删除掉第一个子元素后,第二个子元素的顺序就动态的变成了0,因为第一个没有了 所以第二个成了第一个 依次类推 这样的话 所谓的删除第二个元素就变成删除第三个元素了

将代码为如下,其实改动很小:

for(var i=0; i<len-1; i++){
   ul.removeChild(li[0]);
}

这个思路是 每次都删除第一个元素 这样就可以了

原因是什么呢 我百度了下 不知道得到的答案是不是正确的

NodeList是DOM中一个可以从0开始的标签索引,这种对象一般是可以同时返回多个单节点的DOM方法返回过来的。(如上文的getElementsByTagName('li')),NodeList

是一个动态的对象,对文档树的任何操作将直接反映到这个对象上。比如文档子节点的增删改移动都会使NodeList对象的索引和内容发生变化。

目前得到的答案是这样,先记一下~~

 

转载于:https://www.cnblogs.com/lxin/archive/2012/07/17/2595434.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值