2011-07-02 50 views
1

我试图让一个DIV的innerHTML越来越div名称

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

的名字,但是当我尝试打印出来使用的innerHTML是div的名称回来为未定义。这可以做到或我做错了什么?

回答

12

根据W3Schools一个div不能有name属性,但它可以有一个idclasstitle。我认为DOM不会识别该属性,因此不会将它提供给Javascript。

我做了一个example here它显示title工作和name失败,如你所描述的。

+0

噢好吧,我想我也可以使用标题。万分感谢! –

+3

我会坚持使用id和class属性。他们是最可靠的。 – Kon

1

如果你想获得股利的名字,你应该写一些代码,可以从一个元素获取属性(如果你不感兴趣的跨浏览器支持只使用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> 
3

最好的办法是使用的getAttribute作为唯一属性的一小部分是ACC直接可用(标题例如可以,但不能)。

的的getAttribute()方法也将与无标准属性(其可以是在时间非常有用)

在下面的代码应该正确的节点名称传递它到FUNC函数:)

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

希望有帮助。

+0

这一个是非常有益的,thx –