我想用document.getElementsByTagName返回值
document.getElementsByTagName('input').concat(some_array)
但document.getElementsByTagName()
返回的object
代替array
如何获得数组?
我想用document.getElementsByTagName返回值
document.getElementsByTagName('input').concat(some_array)
但document.getElementsByTagName()
返回的object
代替array
如何获得数组?
不幸的是这样做完全可靠的,你需要做手工,例如:
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
在肖恩的回答蒙混过关,这可能无法在浏览器上,其中NodeList
由getElementsByTagName
返回的对象是“主机对象”。
ECMAScript中定义了呼吁Array.prototype
方法必须与一个length
和整数性能为母语的JS对象的工作,并为arguments
对象,但不保证主机对象。与几乎所有涉及主机对象的东西一样,浏览器可以随心所欲地将你搞砸,不过它喜欢。
如果您不需要支持IE版本小于或等于7 *然后使用slice()
:
Array.prototype.slice.call(
document.getElementsByTagName('img')).concat(some_array)
*
感谢bobince!
那么,肖恩的答案在FF,Opera和Chrome中完美的工作。 ...但在ie6中不起作用。任何人都可以告诉我有关ie7,ie8,ie9吗? – Dan 2010-12-22 20:14:36