动态绑定onclick事件为for循环中的所有按钮提供相同的值

Adn*_*ala 1 html javascript jquery dynamic button

我正在尝试动态创建按钮并在点击事件中为每个按钮提供警报功能.这里的javascript函数为:

function GetTabs(tabObj) {
   for (var t = 0; t < tabObj.views.view.length; t++) {               
        var podObjlen = '';
        var element = document.createElement('input');
        element.id = "btn" + t;
        element.setAttribute("type", "button");
        element.setAttribute("value", "Click");
        element.setAttribute("name", "button");
        podObjlen = tabObj.views.view[t].pod.length;
        document.body.appendChild(element);
        document.getElementById('btn' + t).onclick = (this, "onclick", function {
           alert(podObjlen);                    
        });                
    }
}
Run Code Online (Sandbox Code Playgroud)

无论我点击什么按钮,警报总是向我显示所有按钮的循环中的最后一个值,即长度值被分配给所有警报.它没有为按钮的每个警报分配独立值.我尝试了几种方法:

element.getElementById('btn' + t).onclick = (this, "onclick", function {
    alert(podObjlen);                    
}); 
element.getElementById('btn' + t).onclick = new function () {
    alert(podObjlen);
}
Run Code Online (Sandbox Code Playgroud)

(这里它显示了我在警告框中的正确值,但我一个接一个地得到警报,但当我实际点击一个按钮时警报无法触发,即警报触发我的按钮被渲染的那一刻.希望我很清楚.我想要什么我是否需要在循环运行时获取实际值以确定每个按钮的警报.

sus*_*ani 5

您正在观察的Adnan是javascript中臭名昭着的循环问题.由于对javascript如何工作的理解较少而发生这种情况,这也在此前的帖子中进行了讨论

Javascript臭名昭着的循环问题?