我在javascript中有以下代码:
var prop="author";
var optele = theform.getElementsByTagName("input");
alert(optele[prop]);
但在Chrome中,即使我确定“作者”标签存在,它也会返回“未定义”。
相反,请在IE和Firefox中正常运行。
但是我注意到IE和Firefox中的optele var中有一个“ namedItem”方法,而Chrome中没有。
有人可以帮助我在Chrome上运行类似的代码语法吗?
最佳答案
这是因为IE和FF返回HTMLCollection
而不是NodeList
。 NodeList
不能通过名称或ID提取元素(namedItem
method 可以这样做)。
解决方案是不使用此功能,而是遍历节点并比较name
属性。或者,您可以使用document.getElementsByName
。
从MDN getElementsByTagName
documentation:
注意:虽然W3C规范说elements
是NodeList
,但此方法在Gecko和Internet Explorer中都返回HTMLCollection
。 Opera返回NodeList
,但实现了namedItem
方法,这使其与HTMLCollection
相似。从2012年1月开始,仅在WebKit浏览器中返回的值是纯NodeList
。有关详细信息,请参见bug 14869。
关于javascript - Chrome中带有getElementByTagName的NamedItem方法不起作用吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15295717/