javascript“可变变量可以从闭包”中获取

时间:2014-03-15 17:11:04

标签: javascript for-loop mutable

我试图为数组中的每个按钮分配一个函数。

简化问题我用简单的console.log交换了该函数的功能

当点击其中一个按钮时,控制台应该说"按钮编号"然后是相应的按钮编号(1,2,3 ......)而是始终返回最大按钮编号。

        function buttoncount(){
            dbuttons = document.getElementsByClassName("deletebutton");
            for(var ii = 0; ii< dbuttons.length; ii++){
                dbuttons[ii].onclick = function (){
                    console.log("button number"+ii);
                }
            }
        }

提前致谢

1 个答案:

答案 0 :(得分:1)

您必须确保为连续按钮捕获单独的闭包。其中一种方法是将实际函数包装在另一个立即执行的函数中。

    function buttoncount(){
        dbuttons = document.getElementsByClassName("deletebutton");
        for(var ii = 0; ii< dbuttons.length; ii++){
            dbuttons[ii].onclick = (function (x){
                return function() {
                  console.log("button number"+x);
                }
            }(ii));
        }
    }