gpt4 book ai didi

javascript - 使用 Array.forEach 迭代 getElementsByClassName 的结果

转载 作者:行者123 更新时间:2023-11-27 22:54:49 25 4
gpt4 key购买 nike

我想遍历一些 DOM 元素,我正在这样做:

document.getElementsByClassName( "myclass" ).forEach( function(element, index, array) {
//do stuff
});

但是我得到一个错误:

document.getElementsByClassName("myclass").forEach is not a function

我使用的是 Firefox 3,所以我知道 getElementsByClassNameArray.forEach 都存在。这很好用:

[2, 5, 9].forEach( function(element, index, array) {
//do stuff
});

getElementsByClassName 的结果是数组吗?如果不是,那是什么?

最佳答案

不,它不是数组。作为specified in DOM4 , 这是一个 HTMLCollection (至少在现代浏览器中是这样。较旧的浏览器返回 NodeList )。

在所有现代浏览器中(几乎所有其他 IE <= 8),您可以调用 Array 的 forEach 方法,将元素列表(可以是 HTMLCollectionNodeList) 作为this 值:

var els = document.getElementsByClassName("myclass");

Array.prototype.forEach.call(els, function(el) {
// Do stuff here
console.log(el.tagName);
});

// Or
[].forEach.call(els, function (el) {...});

如果您很高兴能够使用 ES6(即您可以安全地忽略 Internet Explorer 或者您正在使用 ES5 转译器),您可以使用 Array.from :

Array.from(els).forEach((el) => {
// Do stuff here
console.log(el.tagName);
});

关于javascript - 使用 Array.forEach 迭代 getElementsByClassName 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59299366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com