这段代码昨天让我感到惊讶,我很好奇发生了什么事。
如果我在表单的页面上引用我知道的Div元素,即使使用getElementsByName复制/粘贴确切名称,以下内容也无法找到它。
var coll = document.getElementsByName("txtState"); //coll will be null
如果我获得了页面上的所有Div标签,并通过查看name属性进行迭代,我可以找到正确的Div元素。
var coll = document.getElementsByTagName("Div");
for (var i = 0; i < coll.length; i++) {
var el= coll[i];
if (el.name != null) {
if (el.name.length > 0) {
if (el.name == "txtState") {
alert("Found");
}
}
}
}
那么,怎么了?为什么Javascript无视获取特定元素?为什么我必须遍历集合?
答案 0 :(得分:24)
来自here:
在我们继续之前,我们应该消除一些书籍和互联网上的一些错误信息:与某些人所说的相反,没有合法的方法来使用div或span这样的标签中的name属性,根据W3C HTML 4.01规范。您必须将此属性的用法限制为输入,img,frame,iframe,form,map,param,meta,object,A,select,applet,textarea或button等标记。
因此,“name”不是div的有效属性,这就是getElementsByName不起作用的原因。
答案 1 :(得分:2)
我一直依赖于使用getElementById('SomeId')并确保设置了DIV标记的ID属性。
尝试使用DIV,它应该可以解决您的JavaScript问题。