document.getElementsByTagName返回值 [英] document.getElementsByTagName return value
问题描述
我想使用
document.getElementsByTagName('input').concat( some_array )
但 document.getElementsByTagName()
返回一个对象
而不是数组
如何获取数组?
推荐答案
不幸的是要完全可靠地执行此操作,需要手动执行,例如:
Unfortunately to do this fully reliably you need to do it manually, eg:
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(...)
尽管您经常使用可以使用 Array.prototype.somearraymethod.call
在Sean的回答中,在 getElementsByTagName
返回的 NodeList
对象是主机对象的浏览器上可能会失败。
Whilst you often can get away with using Array.prototype.somearraymethod.call
as in Sean's answer, this may fail on browsers where the NodeList
object returned by getElementsByTagName
is a ‘host object’.
ECMAScript定义了 Array.prototype
上的调用方法必须适用于具有长度的本机JS对象
和整数属性,对于参数
对象,但不保证主机对象。与几乎所有涉及主机对象的东西一样,浏览器可以自由地拧紧,但是它喜欢。
ECMAScript defines that calling methods on the Array.prototype
has to work for native-JS objects with a length
and integer properties, and for the arguments
object, but it makes no guarantees for host objects. As with almost everything involving host objects, the browser is free to screw you over however it likes.
这篇关于document.getElementsByTagName返回值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!