li
順序付けされていないリスト内の一連の要素にonclickイベントを単純に割り当てたいと思います。多くの一意のIDを定義し、各要素にイベントを手動で追加するという面倒な方法ではなく、プログラムでループli
を使用して実行したいと思います。for
html:
<ul id="homeNav">
<li><a title="Back to home page" href="">home</a></li>
<li><a title="Play" href="">play</a></li>
<li><a title="About the site?" href="">about</a></li>
<li><a title="Latest development news and info." href="">dev blog</a></li>
<div class="clear"></div>
</ul>
Javascript:
window.onload = function()
{
var parentList = document.getElementById('homeNav');
var listItems = parentList.getElementsByTagName('li');
var numItems = listItems.length;
for(var i = 0; i < numItems; i++)
{
listItems[i].onmouseover = function()
{
listItems[i].getElementsByTagName('a')[0].style.color = 'blue';
}
listItems[i].onmouseout = function()
{
listItems[i].getElementsByTagName('a')[0].style.color = '#cccccc';
}
}
}
エラーが発生しますlistItems[i] is undefined
i
私には、イベントがトリガーに追加されたときに割り当てられた番号を使用するのではなく、イベントが文字通りインデックス変数を探しているように見えますか、またはi
変数がクロージャのスコープ内にないのでしょうか?