我想用
document.getElementsByTagName('input').concat( some_array )
但document.getElementsByTagName()
会返回object
而不是array
如何获取阵列?
答案 0 :(得分:7)
不幸的是,要完全可靠地完成这项工作,您需要手动完成,例如:
function toArray(arraylike) {
var array= new Array(arraylike.length);
for (var i= 0, n= arraylike.length; i<n; i++)
array[i]= arraylike[i];
return array;
}
toArray(document.getElementsByTagName('img')).concat(...)
虽然您经常可以在Sean的回答中使用Array.prototype.somearraymethod.call
,但在NodeList
返回的getElementsByTagName
对象的浏览器中,这可能会失败'主客体'。
ECMAScript定义Array.prototype
上的调用方法必须适用于具有length
和整数属性的本机JS对象,以及arguments
对象,但它不能保证主机对象。与几乎所有涉及主机对象的内容一样,浏览器可以随心所欲地将其搞砸。
答案 1 :(得分:3)
如果您不需要支持小于或等于7 *的IE版本,请使用slice()
:
Array.prototype.slice.call(
document.getElementsByTagName('img')).concat(some_array)
*
谢谢bobince!