基本的な質問。
document.getElementById("yy").onmouseover = hi;
//document.getElementsByTagName("li").onmouseover = hi;
...
この例では、http://jsfiddle.net/8fURz/1/なぜ最初の行は機能しますが、2番目の行は機能しません(もちろんコメントがない場合)?
私はjQueryでこれを簡単に行うことができることを知っています、ただ疑問に思っています...
基本的な質問。
document.getElementById("yy").onmouseover = hi;
//document.getElementsByTagName("li").onmouseover = hi;
...
この例では、http://jsfiddle.net/8fURz/1/なぜ最初の行は機能しますが、2番目の行は機能しません(もちろんコメントがない場合)?
私はjQueryでこれを簡単に行うことができることを知っています、ただ疑問に思っています...
document.getElementsByTagName("li")
を返すためNodeList
、イベントハンドラーをのすべての要素にバインドする必要がありますNodeList
。
var list = document.getElementsByTagName("li");
for (var i= 0; i < list.length; i++) {
list[i].onmouseover = hi;
}
getElementsByTagNameはDOM要素のコレクションを返すためです。もちろん、コレクションにはクリックイベントはありません。コレクション内のすべての要素にイベントをバインドする場合は、コレクションをループして、コレクション内のすべてのDOM要素にハンドラーを追加するだけです。