1

我正在尝试动态创建按钮并在单击事件上为每个按钮设置一个警报功能。这是 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);                    
        });                
    }
}

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

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

(这里它在警报框中显示了正确的值,但我一个接一个地得到警报,但是当我实际单击按钮时警报未能触发,即警报在我的按钮呈现时触发。希望我很清楚。我想要什么我是否需要在循环运行时获取要分配的实际值以提醒每个按钮。

4

1 回答 1

5

Adnan 您正在观察的是 javascript 中臭名昭著的循环问题。发生这种情况是由于对 javascript 如何工作的了解较少,它也已在上一篇文章中讨论过

Javascript臭名昭著的循环问题?

于 2012-07-10T10:52:10.010 回答