我正在用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,一旦for循环结束,它将始终为10。有没有办法删除对i的依赖,同时保持我的代码简洁(即使用for循环)?我不想为每个按钮写出事件处理程序。
答案 0 :(得分:4)
为什么不使用this
代替num_array[i]
?
for (var i = 0; i < num_array.length; ++i) {
num_array[i].onclick = function() {
document.getElementById("display").value += this.value;
};
}
this
将指向已点击的元素。