2011-12-10 60 views
1

这是我的JavaScript的onMouseOver事件处理程序的Div标签。 (它工作正常,至少在铬& IE):如何动态访问特定Div标签的元素?

function changeCallout(sender, e) { 
    document.getElementById(sender.id).className = "callout2"; 
} 

我想做什么就能做的是设置载有是有它的类改变了DIV中的H2标签的颜色属性。

我知道我应该可以访问颜色属性或更改类,但我无法弄清楚如何只访问适当的H2标签(我知道getElementsByTagName)。这是什么语法?

TIA。

回答

2

假设想h2是目标div下的第一个,然后用下面的搜索相对于div

var div = document.getElementById(sender.id); 
var h2 = div.getElementsByTagName("h2")[0]; 

如果它不是第一个,简单地改变0n(上第二行)其中n是所需标题的位置。

+0

谢谢lwburk。那就是诀窍。 – Karl

2

document.getElementById(sender.id).getElementsByTagName('h2')将返回具有给定id的元素内的所有H2元素的NodeList。

2

是的,getElementsByTagName会做的伎俩,但请记住,它也得到嵌套的元素。例如,如果你在div中有一个带有h2元素的div,那么它们也会被转储到数组中。

我知道这不是你的问题,但你不需要让发件人元素的ID在代码中使用它;只需使用this关键字作为参数,并将元素传递给该函数。它适用于内嵌html元素和eventListener调用,并且不需要使用getElementById。

<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
     <style> 
      div {width:100px;height:100px;background-color:#F00;} 
      </style> 
    </head> 
    <body> 

     <div onclick="onClick(this)">I'm a div</div> 

     <script> 
      function onClick(div) { 
       alert(div.innerHTML); 
      } 
      </script> 
    </body> 
</html> 
+0

谢谢Jeffrey。我必须记住这一点。 – Karl