好的,我有一个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?
谢谢, 杰夫
答案 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
是本地范围的变量,在执行事件处理程序时仍在范围内考虑。