我正在使用香草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)
我正在尝试的可能吗?
答案 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;