我在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规范说elementsNodeList,但此方法在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/

10-12 04:03