动态给element绑定onclick方法的问题

var btns = document.getElementsByTagName('button');
    for(var i = 0;i<btns.length;i++){
        var btn = btns[i];
        btn.onclick=function(){
            console.log(i);//点击两个按钮都会打印1
        };
    }

    //使用自执行函数的方式解决
    for(var i = 0;i<btns.length;i++){
        var btn = btns[i];
        (function(i){
            btn.onclick=function(){
                console.log(i);//点击两个按钮分别打印0 1
            };
        })(i);
    }

    //使用let定义i,let定义的变量在块作用域里有效
    for(let i = 0;i<btns.length;i++){
        var btn = btns[i];
        btn.onclick=function(){
            console.log(i);//点击两个按钮分别打印0 1
        };
    }

猜你喜欢

转载自blog.csdn.net/Scryhuaihuai/article/details/82909592