document.getElementsByTagName返回值

时间:2010-12-22 19:56:19

标签: javascript dom

我想用

document.getElementsByTagName('input').concat( some_array )

document.getElementsByTagName()会返回object而不是array

如何获取阵列?

2 个答案:

答案 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!