@reasonov

Почему не получается отписаться от события?

Здравствуйте, пытаюсь отписаться от события, когда деактивируется чекбокс, но судя по консольлогам ничего не происходит
posCheck.onclick = () => {
  console.log(posCheck.checked)

  if(posCheck.checked) {
    window.addEventListener('keydown', event => {
      console.log(event.key)
    })
  } else {
    console.log('asd')
    window.removeEventListener('keydown', event => {
      return
    })
  }
}


Заранее спасибо
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
Потому что removeEventListener должен вызываться с указателем на ту функцию от которой ты хочешь отписаться в качестве второго аргумента (указывать должны на один и тот же объект в памяти), а у тебя он вызывается с двумя абсолютно разными функциями (одинаковый код в функциях это не тоже самое что указатель на один и тот же объект в памяти).
https://developer.mozilla.org/en-US/docs/Web/API/E...
Это событие отписывается не от всех слушателей, а от одного конкретного, указатель на который ты передашь в аргумент.
Грубо говоря, сначала регистрируешь функцию, которая будет слушателем, а потом одну и туже функцию используешь и в addEvent и в remove
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы