JS removeChild 删除全部,却删除做不了,为什么?

为什么不能全部删除,而且第一次删除的是2和4,偶数。
我想一次全部删除要怎么做。
只适配WEBKI

<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
</ul>

function test(){
    var li = document.getElementsByTagName('li');
    for(var i = 1; i < li.length; i++){
        li[i].parentNode.removeChild(li[i]);
    }
}
阅读 3.9k
2 个回答

var li = document.getElementsByTagName('li');
返回的li集合对象是一个动态绑定的,而非静态绑定。
也就是说你每删除一个子元素,li的大小就会发生变化
你共有5个子元素
你从第2个开始删除
i=1->长度变为4->i为2 ,2<4,继续删除 <li>2</li>被删除
i=2->长度变为3->i为3 ,3<3,不能够继续删除 <li>4</li>被删除
也就是你只删除了2个元素

访问为从尾部开始删除

function test(){
    var li = document.getElementsByTagName('li');
    while(li.length!=0){
        li[li.length-1].parentNode.removeChild(li[li.length-1]);
    }
}
function test() {
    var li = document.getElementsByTagName('li');
    while(obj = li[0]){
        obj.remove();
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题