在Chrome中使用getElementByTagName的NamedItem方法不起作用?

时间:2013-03-08 14:03:03

标签: javascript google-chrome

我在javascript中有这个代码:

var prop="author";
var optele = theform.getElementsByTagName("input");
alert(optele[prop]);

但在Chrome中,它会返回“undefined”,即使我确定“author”标记存在。 相反,在IE和Firefox中运行良好。

但我注意到IE和Firefox中的optele var中有一个“namedItem”方法,但Chrome中没有。

有人可以帮我在Chrome上运行类似的代码语法吗?

1 个答案:

答案 0 :(得分:5)

那是因为IE和FF返回HTMLCollection [MDN]而不是NodeList [MDN]NodeList没有办法按名称或ID提取元素(namedItem method [MDN]的作用)。

解决方案是不使用此功能,而是迭代节点并比较name属性。或者,您可以使用document.getElementsByName [MDN]

来自MDN getElementsByTagName documentation

  

注意:虽然W3C规范说elementsNodeList,但此方法在Gecko和Internet Explorer中都返回HTMLCollection。 Opera返回NodeList,但实现了namedItem方法,这使其类似于HTMLCollection。截至2012年1月,仅在WebKit浏览器中返回的值为纯NodeList。有关详细信息,请参阅bug 14869