Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript onclick依赖于for循环的i值。如何删除它?_Javascript - Fatal编程技术网

Javascript onclick依赖于for循环的i值。如何删除它?

Javascript onclick依赖于for循环的i值。如何删除它?,javascript,Javascript,我正在用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

我正在用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;
    };
}
/*一、二、三等是前面定义的变量。
*
*比如说,,
*var one=document.getElementById(“one”);
*其中该元素是一个显示“1”的按钮
*
*“显示”元素是计算器显示
*/
var num_数组=[1,2,3,4,5,
六,七,八,九,零];
对于(变量i=0;i

但这不起作用,因为onclick的事件处理程序依赖于i,一旦for循环完成,i总是10。在保持代码简洁(即使用for循环)的同时,有没有办法消除对i的依赖?我不想为每个按钮编写事件处理程序。

为什么不使用
这个
来代替
num\u数组[I]

for (var i = 0; i < num_array.length; ++i) {
    num_array[i].onclick = function() {
        document.getElementById("display").value += this.value;
    };
}
for(变量i=0;i

将指向已单击的元素。

为什么不使用
代替
num_数组[i]

for (var i = 0; i < num_array.length; ++i) {
    num_array[i].onclick = function() {
        document.getElementById("display").value += this.value;
    };
}
for(变量i=0;i
将指向已单击的元素