Удалите или отключите приемник onclick для строки таблицы, используя vanilla js - PullRequest
0 голосов
/ 29 сентября 2018

Я динамически добавляю строки в таблицу, используя vanilla 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 голосов
/ 29 сентября 2018

Ваш текущий 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...