HTMLCollection
是一个类数组对象,表示一组元素的集合,通常是通过 document.getElementsByClassName
或 element.getElementsByTagName
等方法获取的。它类似于数组,但并不是真正的数组,因此没有数组的所有方法,比如 push
、map
等。
HTMLCollection
会自动更新。querySelectorAll
获取。与 HTMLCollection
不同的是,NodeList
可以是静态的(如通过 querySelectorAll
获取)或动态的(如通过 childNodes
获取)。HTMLCollection
。let elements = document.getElementsByClassName('example');
for (let i = 0; i < elements.length; i++) {
console.log(elements[i]);
}
let elements = document.getElementsByClassName('example');
Array.from(elements).forEach(function(element) {
console.log(element);
});
let elements = document.getElementsByClassName('example');
for (let element of Array.from(elements)) {
console.log(element);
}
原因:由于 HTMLCollection
是动态的,如果在遍历过程中修改了 DOM 结构(如添加或删除元素),可能会导致遍历出现问题。
解决方法:
HTMLCollection
转换为数组。let elements = Array.from(document.getElementsByClassName('example'));
elements.forEach(function(element) {
console.log(element);
});
let elements = document.getElementsByClassName('example');
for (let i = elements.length - 1; i >= 0; i--) {
console.log(elements[i]);
}
通过上述方法,可以有效地遍历 HTMLCollection
并处理可能遇到的问题。
领取专属 10元无门槛券
手把手带您无忧上云