2012-07-10 32 views
1

我試圖動態創建按鈕和assining爲每一個上單擊警報功能相同的值event.Here是JavaScript函數爲:動態綁定onclick事件給出了所有的按鈕在for循環中

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

(這表明在alertbox我正確的價值觀,但我得到了其他汽車無後警報之一,但警報失敗即警報觸發的開火時,我實際點擊一個按鈕當我的按鈕被渲染的時候 希望我清楚我想要的是我需要獲得實際的值,以便在循環運行時提醒每個按鈕

+0

閉包的概念:) – ComethTheNerd 2012-07-10 10:51:14

+0

閱讀起來真不走運的是,'的onclick =(這一點,「點擊」,...'部分沒有給你一個語法錯誤。這不是很有意義 - 你期望'this'和''onclick''做什麼? – pimvdb 2012-07-10 10:53:00

回答

5

Adnan你正在觀察的是臭名昭着的在JavaScript中出現了一個循環問題,這是由於對javascript工作原理的理解不足造成的,這在前面的帖子裏也有討論過

Javascript infamous Loop issue?

+0

非常感謝你sushil,它工作.. – 2012-07-10 12:08:27

相關問題