我在javascript中有这个代码:
var prop="author";
var optele = theform.getElementsByTagName("input");
alert(optele[prop]);
但在Chrome中,它会返回“undefined”,即使我确定“author”标记存在。 相反,在IE和Firefox中运行良好。
但我注意到IE和Firefox中的optele var中有一个“namedItem”方法,但Chrome中没有。
有人可以帮我在Chrome上运行类似的代码语法吗?
答案 0 :(得分:5)
那是因为IE和FF返回HTMLCollection
[MDN]而不是NodeList
[MDN]。 NodeList
没有办法按名称或ID提取元素(namedItem
method [MDN]的作用)。
解决方案是不使用此功能,而是迭代节点并比较name
属性。或者,您可以使用document.getElementsByName
[MDN]。
来自MDN getElementsByTagName
documentation:
注意:虽然W3C规范说
elements
是NodeList
,但此方法在Gecko和Internet Explorer中都返回HTMLCollection
。 Opera返回NodeList
,但实现了namedItem
方法,这使其类似于HTMLCollection
。截至2012年1月,仅在WebKit浏览器中返回的值为纯NodeList
。有关详细信息,请参阅bug 14869。