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

时间:2008-11-20 03:46:35

标签: 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);
  }

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

谢谢, 杰夫

2 个答案:

答案 0 :(得分:25)

试试这个:

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

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

答案 1 :(得分:4)

在clickTest函数中,您应该可以访问this变量。在clickTest函数内部尝试:

alert(this.id);

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

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

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

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

cell.id是本地范围的变量,在执行事件处理程序时仍在范围内考虑。