2008-11-20 128 views
11

好吧,我有一個在這樣的表中創建一個行的Javascript:如何將參數傳遞給動態設置的Javascript函數?

function AddRow(text,rowID) 
    { 
    var tbl = document.getElementById('tblNotePanel'); 
    var row = tbl.insertRow(tbl.rows.length); 

    var cell = row.insertCell(); 
    var textNode = document.createTextNode(text); 
    cell.id = rowID; 
    cell.style.backgroundColor = "gold"; 

    cell.onclick = clickTest; 

    cell.appendChild(textNode); 
    } 

在上面的功能我設置單元格的「點擊」功能調用另一個名爲「clickTest」 JavaScript函數。我的問題是,當我分配「的onclick」事件叫「clickTest」,我怎麼設置參數信息當「clickTest」方法被調用該單元格的「點擊」事件發送?或者,如何在「clickTest」函數中訪問單元的ID?

感謝, 傑夫

回答

21

試試這個:

cell.onclick = function() { clickTest(rowID); }; 

的想法是,你要綁定的onclick處理程序,以匿名函數。匿名函數以rowID作爲參數調用clickTest。

4

在clickTest功能,您應該有權訪問的this變量。嘗試clickTest功能這裏面:

alert(this.id); 

這指的是觸發事件的DOM元素。

基本上沒有真正將參數傳遞給事件處理函數的方式。原因是瀏覽器正在執行基於事件的函數,而實際上並沒有調用該函數。

您可以使用閉包,讓你可以在你指定的事件處理函數訪問局部變量(於封閉)。這將是這樣的:

cell.onclick = function() { alert(this.id); alert(cell.id); }; 

cell.id是局部範圍的被執行的事件處理程序的範圍仍然被認爲是可變的。

相關問題