很久以前被坑了一回,最近一个不注意又傻了吧唧踩了一回,记录一下
let bodys=document.getElementsByClassName("body");
bodys.forEach(b=>{b.remove(b);});
本来是想删除所有的body类,但是最后总是会剩几个
后来发现是因为forEach每次循环index都会+1,例如第一次循环删除bodys[0]后数组剩余元素会往前推,而index依旧+1
bodys=[a,b,c,d]
index=0,删除bodys[0]=>[b,c,d]
index=1,删除bodys[1]=>[b,d]
于是下一次循环删除的元素就是新的bodys[1]了,b就这样被漏掉了~
使用for循环的话就能很快发现问题了,当时偷懒用的forEach没反应过来,被简简单单的小细节困扰了好久😂总之使用循环删除元素的话一定要注意索引变化