使用Vanilla JS删除或禁用表行的onclick侦听器

时间:2018-09-29 01:52:25

标签: javascript html css html-table row

我正在使用香草js向表中动态添加行,如下所示:

// insert new row
var row = table.insertRow()
// add click listener to row
row.onclick = (function rowClickListener(){
     // delete row on click
    table.deleteRow(row.rowIndex)
})

但是当另一个功能正在运行时,我想在该功能期间禁用onclick功能(这样用户就不能在处理过程中删除表项)。我尝试失败:

row.disabled = true
// and
row.removeEventListener('click', rowClickListener)

我正在尝试的可能吗?

1 个答案:

答案 0 :(得分:0)

您当前的function rowClickListener是一个函数表达式,而不是函数声明,因此不会在外部范围内创建任何rowClickListener变量。您需要引用函数变量才能访问removeEventListener

此外,为了进行removeEventListener,您需要通过addEventListener添加该函数:

function rowClickListener(){
  table.deleteRow(row.rowIndex)
}
row.addEventListener('click', rowClickListener);
// later...
row.removeEventListener('click', rowClickListener);

如果您想走onclick路线,则可以通过向其分配null来删除监听器:

row.onclick = () => table.deleteRow(row.rowIndex);
// later...
row.onclick = null;
相关问题