2008-11-20 126 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是局部范围的被执行的事件处理程序的范围仍然被认为是可变的。

相关问题