繁体   English   中英

循环中的javarscript“可变变量可以从闭包中获取”

[英]javarscript “mutable variable is accesible from closure” in loop

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

为了简化问题,我已经用一个简单的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);
                }
            }
        }

提前致谢

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

    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));
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM