私は非常に単純なアプリケーションで作業しています。ユーザーが任意のリスト項目(li
)の上を移動すると、テキストの色は緑に変わり、マウスが外に出ると黒に戻ります。引数としての無名関数の範囲
lis[i]
を、this
キーワードではなく、匿名関数内の次のコードに使用できないのはなぜですか?
var lis = document.querySelectorAll('li');
var i = 0;
for(; i < lis.length; i++){
lis[i].addEventListener('mouseover', function(){
this.style.color = 'green';
});
lis[i].addEventListener('mouseout', function(){
this.style.color ="black";
});
};
のように現在のターゲットを取得するには、 "e.srcElement" を使用することができ、 '' 'i'''はまだでしょうforループの最後の値(この場合はlis.length、 '' 'lis [i]' '' undefined)に固定されています。これはJavascriptのクロージャによるものです。 @ Duncanの答えを見てください。 –
@MichaelYangそれを指摘してくれてありがとう、私は問題の根よりも解決策に重点を置いていた – Erazihel
もちろん、あなたのソリューションは非常に良いです!私はちょうどそれを指摘したかった:-) –