0

我在javascript中有这段代码:

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

但在 Chrome 中,即使我确定“作者”标签存在,它也会返回“未定义” 。相反,在 IE 和 Firefox 中运行良好。

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

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

4

1 回答 1

5

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

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

从 MDNgetElementsByTagName文档

注意:虽然 W3C 规范说elements是 a ,但此方法在 Gecko 和 Internet Explorer 中都NodeList返回 a 。HTMLCollectionOpera 返回 a NodeList,但namedItem实现了一个方法,这使得它类似于 a HTMLCollection。截至 2012 年 1 月,仅在 WebKit 浏览器中返回值是纯NodeList. 有关详细信息,请参阅错误 14869

于 2013-03-08T14:14:05.717 回答