在onclick()中更改onclick()

时间:2013-05-29 14:14:45

标签: javascript javascript-events onclick prototypejs

我有一个TABLE,每个TABLEROW都有一个div,其中包含onclick'deleteRow(rowIndex)',其中rowIndex是应该点击的行的索引。 问题在于,每当我尝试主动更改其中一行onclick时,它就会变形,并在我更改后立即自动调用它:

row.onclick = deleteRow(rowIndex);

我也在使用Prototype.js。

这是我的经纪人:

deleteRow = function(rowIndex) {
    var table = $('tableElmt');
    table.each(function(row, index) {
        if(index == rowIndex)
            row.onclick = deleteRow(index);
    })
}

当我像这样更改onclick时,它会立即再次调用deleteRow并进入循环,我无法找出原因。

我认为这与我在deleteRow()中调用deleteRow()的方式有关,虽然也可能是我正在更改'onclick'。

我也试过这个来处理表行的点击:

row.observe('click', deleteRows(rowIndex));

但它做同样的事情。此外,这与html中所有行已存在的onclick()事件处理程序冲突,我不知道如何处理它。

如何在onclick()事件处理程序中更改onclick()事件处理程序?

1 个答案:

答案 0 :(得分:4)

您正在调用deleteRow函数,并将其结果分配给onclick处理程序。 你想要达到的目标是:

row.onclick = (function(index){
 return function(){
   deleteRow(index);
 }
})(index);