これはどれほど迷惑ですか?http://jsfiddle.net/b3xyx/
- addEventListener を使用して、各リンクに JavaScript 関数を割り当てています。
- ループは各リンクを反復し、インクリメントされた変数 x を割り当てます
- しかし、実際にはリンクをクリックすると、x の値を警告する代わりに、x の最終値を警告します。つまり、x をコピーするのではなく、ポインタを x に割り当てただけです。
ここで動作を確認してください: http://jsfiddle.net/b3xyx/リンクのいずれかをクリックすると、「4」が警告されます。ぐら。
function goToSite(where){ alert("This would take you to " + where + ".com") } for(var x=1; x<=3; x++){ document.getElementById('link'+x).addEventListener('click', function(){goToSite(x)}) }
どうすればこれを回避できますか? この場合、変数の真のコピーを作成する方法はありますか?
編集:重複を提案していただきありがとうございますが、重複していないようです。
^ 私の更新されたコード:
function goToSite(whichOne){
return function(){
alert("This would take you to " + whichOne + ".com");
}
}
それでもうまくいきません。