我有一个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()事件处理程序?
答案 0 :(得分:4)
您正在调用deleteRow函数,并将其结果分配给onclick处理程序。 你想要达到的目标是:
row.onclick = (function(index){
return function(){
deleteRow(index);
}
})(index);