InnerHTML获得Div名称

时间:2011-07-02 23:54:42

标签: javascript html undefined innerhtml

我正在尝试获取DIV的名称

<div id="test" name="info1" onclick="func(this.name)">This is div 1</div>

但是当我尝试使用innerHTML打印出div的名称时,将返回undefined。可以这样做,还是我做错了什么?

3 个答案:

答案 0 :(得分:12)

根据W3Schoolsdiv不能拥有name属性,但可以包含idclasstitle。我认为DOM没有识别属性,因此没有使它可用于Javascript。

我制作了example here,显示title正在工作,name在您描述时失败。

答案 1 :(得分:3)

从节点获取属性的最佳方法是使用getAttribute,因为只有一小部分属性可以直接访问(例如,标题可以是alt,而alt不能)。

getAttribute()方法也可以正常工作,没有标准属性(有时可能非常有用)

下面的代码应该正确地将节点名称传递给func函数:)

<div id="test" name="info1" onclick="func(this.getAttribute('name')">This is div 1</div>

希望有所帮助。

答案 2 :(得分:1)

如果你想得到div的名字,你应该编写一些可以从元素中获取属性的代码(如果你对跨浏览器支持不感兴趣,只需使用elem.getAttribute)

例如:

    var getAttr = function(ele, attr) {
        var result = ele.getAttribute(attr) || ele[attr] || null, attrs, len;
        if( !result ) {
            attrs = ele.attributes;
            len = attrs.length;
            for(var i = 0; i < len; i++)
               if(attrs[i].nodeName === attr)
                  result = attrs[i].nodeValue;
        }
        return result;
};

然后你可以做

<div id="test" name="info1" onclick="func(getAttr(this, 'name'))">This is div 1</div>
相关问题