这段代码昨天让我感到惊讶,我很好奇发生了什么事.
如果我在表单的页面上引用我知道的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无视获取特定元素?为什么我必须遍历集合?
从这里:
在我们继续之前,我们应该消除一些书籍和互联网上的一些错误信息:与一些人所说的相反,根据W3C HTML,没有合法的方法来使用div或span等标签的name属性. 4.01规格.您必须将此属性的用法限制为输入,img,frame,iframe,form,map,param,meta,object,A,select,applet,textarea或button等标记.
因此,"name"不是div的有效属性,这就是getElementsByName不起作用的原因.