document.getElementsByTagName返回值 [英] document.getElementsByTagName return value

查看:125
本文介绍了document.getElementsByTagName返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆