本文介绍了JS:使用Array.forEach遍历getElementsByClassName的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
限时删除!!
$ b document.getElementsByClassName(myclass)我想迭代一些DOM元素,我这样做: .forEach(function(element,index,array){
// do stuff
});
但是我得到一个错误:document.getElementsByClassName(myclass)forEach不是函数
我使用Firefox 3,所以我知道 getElementsByClassName 和 Array.forEach 存在。这工作正常:
$ $ p $ [2,5,9] .forEach(function(element,index,array){
//做东西
});
结果是 getElementsByClassName 一个数组?如果不是,那是什么?
解决方案作为DOM4中指定的,它是(在现代浏览器中,至少老版本的浏览器返回了) 。在所有的现代浏览器(几乎任何其他的IE forEach 。 $ b
方法,将它作为这个元素的列表(它是 HTMLCollection 或 NodeList ) value:
var els = document.getElementsByClassName(myclass);
Array.prototype.forEach.call(els,function(el){
//在这里做的事
console.log(el.tagName);
} );
//或
[] .forEach.call(els,function(el){...});
I want to iterate over some DOM elements, I'm doing this:
document.getElementsByClassName( "myclass" ).forEach( function(element, index, array) {
//do stuff
});
but I get an error: document.getElementsByClassName("myclass").forEach is not a function
I am using Firefox 3 so I know that both getElementsByClassName and Array.forEach are present. This works fine:
[2, 5, 9].forEach( function(element, index, array) {
//do stuff
});
Is the result of getElementsByClassName an Array? If not, what is it?
解决方案
No. As specified in DOM4, it's an HTMLCollection (in modern browsers, at least. Older browsers returned a NodeList).
In all modern browsers (pretty much anything other IE <= 8), you can call Array's forEach method, passing it the list of elements (be it HTMLCollection or NodeList) as the this value:
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) {...});
这篇关于JS:使用Array.forEach遍历getElementsByClassName的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
1403页,肝出来的..