2013-08-29 71 views
0

我有一個函數可以創建幾個按鈕。問題在於onclick屬性不起作用。我如何在JavaScript中使用這個屬性?如何通過JavaScript使用onclick創建按鈕?

function querySuccess(tx, results) { 
    var len = results.rows.length; 

    for (var i=0; i<len; i++){ 
     var name = results.rows.item(i).name; 

     var button = document.createElement("button"); 
     button.className = "buttons"; 
     button.value = name; 
     button.onclick = function() { 
      alert("assa"); 
     }; 

     var listIt = document.createElement("li"); 
     listIt.className = "item"; 
     listIt.appendChild(button); 

     var favs = document.getElementById("favs"); 
     favs.appendChild(listIt); 
    } 
} 
+5

的方法是OK,看https://developer.mozilla.org/pl/docs/DOM /element.onclick你可以在jsfiddle上創建你的問題演示嗎? – Kos

+1

你的代碼沒有什麼明顯的錯誤。任何JS錯誤? – Utkanos

+1

它似乎已經正常工作......檢查出來...... http://jsfiddle.net/3VXrF/ –

回答

1

做的正確的方法......呼喚的addEventListener(在Mozilla的/ WebKit瀏覽器的情況下)或的attachEvent(IE的瀏覽器)。

function createButton(){ 
    var btn = document.createElement('button'); 
    btn.innerHTML = 'Click Me'; 
    if(btn.addEventListener) 
     btn.addEventListener('click',function(){ 
      alert('hello'); 
     }); 
    else 
     btn.attachEvent('click',function(){ alert('hello'); }); 
    document.body.appendChild(btn); 
} 

http://jsfiddle.net/L2KD5/

編輯:檢查下面的鏈接,一個更通用的實現:https://gist.github.com/eduardocereto/955642

+0

或者將處理函數分配給'createButton'的第一個參數,並在添加處理程序而不是編寫重複代碼時使用該函數。 – SeinopSys