代码之家  ›  专栏  ›  技术社区  ›  ssorrrell

javascript无法按名称找到div元素

  •  1
  • ssorrrell  · 技术社区  · 15 年前

    这段代码昨天让我很惊讶,我对发生的事情很好奇。

    如果我引用一个我知道的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 回复  |  直到 15 年前
        1
  •  24
  •   Eric Petroelje    15 年前

    here :

    在我们继续之前,我们应该消除一些书籍和互联网上的一些错误信息:与一些人所说的相反,根据W3CHTML4.01规范,没有合法的方法使用DIV或SPAN等标记的name属性。您必须将此属性的使用限制在诸如input、img、frame、iframe、form、map、param、meta、object、a、select、applet、textfarea或button等标记上。

    因此,“name”不是DIV的有效属性,这就是GetElementsByName无法工作的原因。

        2
  •  2
  •   Jay S    15 年前

    我一直依赖于使用getElementByID(“someID”),并确保设置了div标记的id属性。

    用你的DIV试试这个,它可以解决你的javascript问题。