如何将参数传递给动态设置的Javascript函数?

Ytt*_*ium 13 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);
  }
Run Code Online (Sandbox Code Playgroud)

在上面的函数中,我设置了单元格的"onclick"函数来调用另一个名为"clickTest"的Javascript函数.我的问题是,当我分配"onclick"事件来调用"clickTest"时,如何在单元格的"onclick"事件上调用"clickTest"方法时设置要发送的参数信息?或者,如何在"clickTest"功能中访问单元格的ID?

谢谢,杰夫

tva*_*son 26

试试这个:

cell.onclick = function() { clickTest(rowID); };
Run Code Online (Sandbox Code Playgroud)

这个想法是你将onclick处理程序绑定到匿名函数.匿名函数使用rowID作为参数调用clickTest.


Eri*_*ver 5

在 clickTest 函数中,您应该有权访问变量this。在函数内部试试这个clickTest

alert(this.id);
Run Code Online (Sandbox Code Playgroud)

这将引用触发事件的 DOM 元素。

基本上,没有真正的方法将参数传递给事件处理函数。原因是浏览器正在根据事件执行该函数,而您实际上并未调用该函数。

您可以使用闭包,它允许您在分配事件处理函数时访问局部变量(到闭包)。那看起来像这样:

cell.onclick = function() { alert(this.id); alert(cell.id); };
Run Code Online (Sandbox Code Playgroud)

Werecell.id是本地作用域变量,在执行事件处理程序时仍将其视为作用域内的变量。