JavaScriptで簡単な電卓を書いています。0~9、+、-、*、/、=、クリア用のCのボタンがあります。各ボタンの onclick にイベント ハンドラーを割り当てたい。0 ~ 9 のボタンには非常によく似たイベント ハンドラーがあるため、for ループを使用して各ボタンの onclick に割り当てました。
/* one, two, three, etc. are variables defined earlier.
*
* for example,
* var one = document.getElementById("one");
* where that element is a button that says "1"
*
* the "display" element is the calculator display
*/
var num_array = [one, two, three, four, five,
six, seven, eight, nine, zero];
for (var i = 0; i < num_array.length; ++i) {
num_array[i].onclick = function() {
document.getElementById("display").value += num_array[i].value;
};
}
しかし、onclick のイベント ハンドラーは i に依存しているため、これは機能しません。i は、for ループが終了すると常に 10 になります。コードを簡潔に保ちながら (つまり、for ループを使用して) i への依存を取り除く方法はありますか? 個々のボタンごとにイベント ハンドラーを書き出す必要はありません。