2011-12-10 57 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