我应该如何在同一个循环中迭代多个getElementsByClassName()调用的结果?

Ask*_*way 0 javascript arrays loops concatenation getelementsbyclassname

我想这样做:

a1 = document.getElementsByClassName('classA');
a2 = document.getElementsByClassName('classB');
a3 = a1.concat(a2);

for (var i=0; i<a3.length; ++i) {

}
Run Code Online (Sandbox Code Playgroud)

即获取classA的所有元素,classB的所有元素,然后以允许我遍历所有元素的方式组合它们.它不起作用,因为getElementsByClassName不返回标准数组.

这有效,但必须有一个更合理的方式:

var els = [];
var e1 = document.getElementsByClassName('classA');
var e2 = document.getElementsByClassName('classB');
[].forEach.call(e1, function(el) { els.push(el); });
[].forEach.call(e2, function(el) { els.push(el); });
Run Code Online (Sandbox Code Playgroud)

Wal*_*arz 5

在现代浏览器中,您可以使用:

var a = document.querySelectorAll('.classA, .classB');
Run Code Online (Sandbox Code Playgroud)

这将查找具有"classA"或"classB"的所有元素.您可以在此处找到更多信息和浏览器兼容性表.