【问题标题】:Changing an onclick() inside onclick()在 onclick() 中更改 onclick()
【发布时间】:2013-05-29 14:14:44
【问题描述】:

我有一个 TABLE,每个 TABLEROW 都有一个带有 onclick deleteRow(rowIndex) 的 div,其中 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() 事件处理程序?

【问题讨论】:

标签: javascript onclick prototypejs dom-events


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多