と関数の間にクロージャーがあるはずなので、入力したi
とおりに機能します。
var i="4";
document.getElementById("sc"+i).onmousedown=function() {
return scMotion(i,'up'); // <-- due to the created closure, the i here
// refers to the i above.
};
ただし、閉鎖であることを忘れないでください。したがって、おそらく次のシナリオがあなたをつまずかせているものです。
var i="4";
document.getElementById("sc"+i).onmousedown=function() {
return scMotion(i,'up'); // <-- due to the created closure, the i here
// refers to the i above.
// However, when the event happens in the
// future the value of i in here will
// be "5" due to the code below:
};
i = "5";
これは、古典的なループ内閉鎖問題です。何が起こっているのかを理解するには、これを参照してください:ループでの JavaScript クロージャの使用について説明してください