Javascript无法按名称找到Div Element

时间:2009-02-20 18:01:23

标签: javascript html

这段代码昨天让我感到惊讶,我很好奇发生了什么事。

如果我在表单的页面上引用我知道的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无视获取特定元素?为什么我必须遍历集合?

2 个答案:

答案 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问题。