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/p/2595434.html