我想这样做:
a1 = document.getElementsByClassName('classA');
a2 = document.getElementsByClassName('classB');
a3 = a1.concat(a2);
for (var i=0; i<a3.length; ++i) {
}
即。获取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); });
答案 0 :(得分:5)
在现代浏览器中,您可以使用:
var a = document.querySelectorAll('.classA, .classB');
这会找到所有带有&#39; classA&#39;的元素。或者&#39; classB&#39;。 您可以找到更多信息和浏览器兼容性表here。
答案 1 :(得分:1)
getElementsByClassName
方法返回HTMLCollection
而不是数组。它是一个类似于数组的对象,但你不能在其上使用所有数组方法。
使用slice
方法将集合转换为数组,然后您可以将它们连接起来:
var a3 = Array.prototype.slice.call(a1).concat(Array.prototype.slice.call(a2));
注意:这需要IE9或更高版本。