我正在尝试获取DIV的名称
<div id="test" name="info1" onclick="func(this.name)">This is div 1</div>
但是当我尝试使用innerHTML打印出div的名称时,将返回undefined。可以这样做,还是我做错了什么?
答案 0 :(得分:12)
根据W3Schools,div
不能拥有name
属性,但可以包含id
,class
或title
。我认为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>