Internet Explorer 7 のノード リスト内の項目に関数をバインドしようとしています。
for(var j = 0; j < navLabels.length; j++)
{
navInsets[j].onmouseover = function(){showLabel(navLabels[j], true);};
navInsets[j].onmouseout = function(){showLabel(navLabels[j], false);};
navInsets[j].onclick = function(){selectNew(j);};
navLabels[j].onclick = function(){selectNew(j);};
}
showLabel() と selectNew() は、それぞれ独自の関数です。それぞれにインデックス (この場合は j) を渡す必要があります。
無名関数内では、j が j の値ではなく、j への参照になることはわかっています。addEventListener または bind メソッドを使用してこれを行うことができることも知っていますが、どちらも IE 7 では許可されていません。匿名関数内の関数が attachEvent を使用する (少なくともそれが正しいと思われる)。これが元の問題です。
この件に関してハックすぎない考えはありますか?ありがとう。