2011-12-10 14 views
1

DivタグのJavaScriptのonMouseOverイベントハンドラです。 (これは、少なくともクロム& IEで、正常に動作します):私は行うことができるようにしたいと思い何特定のDivタグの要素に動的にアクセスするにはどうすればよいですか?

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

はそれのクラスが変更されたされた事業部内に含まれるH2タグの色のプロパティを設定することです。

私はcolorプロパティにアクセスするかクラスを変更できるはずですが、適切なH2タグにアクセスする方法を理解できません(私はgetElementsByTagNameを認識しています)。これを行うための構文は何ですか?

TIA。

答えて

2

は、そのdivに対する検索するには、以下を使用して、ターゲットdiv下の最初のものです:

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

それが最初のものではありません場合は、単にn0を変更する(上2行目)ここで、nは目的のヘッダーの位置です。

+0

lwburkありがとうございます。それがトリックでした。 – Karl

2

document.getElementById(sender.id).getElementsByTagName('h2')は、指定されたidを持つ要素内のすべてのH2要素のNodeListを返します。欲しかったh2を想定し

2

はい、getElementsByTagNameはトリックを行いますが、ネストされた要素も取得することに注意してください。たとえば、div内にdiv要素を持つ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

関連する問題