場合によっては、多数の同様のイベントに応答する必要がありますが、各イベントのパラメーターは異なります。最初は、for ループを使用するだけで非常に簡単だと思いましたが、最後のパラメーターが使用されていることがわかりました。 。 。 。
オンラインで情報をチェック! ! !その結果、マスターはクロージャを使用して
コードを解決するように言いました:
for(var i=0;ibtns[i].onclick=(function(i){
return function() {alert(i)}
} )(i)
}
おそらく理由は、btns[i].onclick=function(){alert(i)} が直接使用すると、JavaScript エンジンはまず for ループ内のコードを変換します。実行後、
ユーザーが onclick イベントを開始すると、JavaScript は i を検索し、操作が完了した後の結果は i になります。これは 10
ですが、クロージャで処理すると、関数のローカル変数になります。