问题描述
这个函数首先我获得一个类的数组,并保存,然后通过父元素移除子元素,但是为什么在移除期间 数组长度会变化呢?
问题出现的环境背景及自己尝试过哪些方法
我在控制台调试了一下,得到数组的那句话只执行一次。
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
function removeClassEle(cls){
var arr = document.getElementsByClassName(cls);
var c=arr.length;
var parents = arr[0].parentNode;
for(var i = 0; i<c; i++){
parents.removeChild(arr[0]); //这里有些不明白,为什么移除子元素后arr长度会变呢?arr不是之前读取的吗
}
console.log(arr.length) // 1, 0
}
你期待的结果是什么?实际看到的错误信息又是什么?
麻烦大家给给提示
getElementsByClassName
返回的是HTMLCollection类型,是类数组,HTMLCollection
有它自己的特点:当你把类数组转化为数组的时候,长度就不会变了:
但是不建议这种方式,因为dom元素已经移除了,但是dom还被arr引用,所以dom不会从内存中移除,
有可能
会造成内存泄露。