原生js操作dom会莫名其妙跳过一些元素

图片描述

这里这个lis里面本来有8,9,14三个元素,但是你们结合代码看看控制台里面只遍历了8和14,为什么9被跳过了?

阅读 2.1k
3 个回答

谢邀~

对数组(其实是nodelist)操作了, i还继续在增长 可不就跳过了.
这里就不用for循环了, 一个

while(lis.length > 0){
    //每次remove第一个就行了 lis[0]
}

因为你的list是动态改变了长度、

长度可以赋值给一个变量、用这个变量给for循环使用

可以拆开for循环看、

第一次i=0、length=3进循环、
删除了list[0]也就是你的8

第二次i=1、length=2了
list[1]也就是14

第三次就进不去循环了

querySelectorAll就可以解决这个问题。

getElementsByTagName返回的是一个动态list,也就是说你删除一个的话,list.length就减少1

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题