Правильное удаление клика с элементов

111
17 августа 2021, 05:00

Хотелось бы, чтобы при нажатии на кнопку прошлый клик с переменной 'hi' удалялся. Но почему-то этого не происходит

let li = document.getElementsByTagName('li'); 
    let butt = document.getElementById('delete'); 
 
    function action(text){ 
        console.log(text); 
    } 
 
    Array.from(li, function (item) { 
        item.addEventListener('click', function () { 
            action('hi'); 
        }); 
    }); 
     
    butt.addEventListener('click', function () { 
        Array.from(li, function (item) { 
            item.removeEventListener('click', function () { 
                action('hi'); 
            }); 
            item.addEventListener('click', function () { 
                action('bye'); 
            }); 
        }); 
    });
<ul> 
    <li>1</li> 
    <li>2</li> 
    <li>3</li> 
</ul> 
<button id="delete">Delete first click</button>

Answer 1

Потому что такие конструкции

    item.addEventListener('click', function () {
        action('hi');
    });
    ...
    item.removeEventListener('click', function () {
        action('hi');
    });

создают новый объект функции-обработчика.

let li = document.getElementsByTagName('li'); 
let butt = document.getElementById('delete'); 
 
function action(text) { 
  console.log(text); 
} 
 
function hi() { 
  action('hi'); 
} 
 
Array.from(li, function(item) { 
  item.addEventListener('click', hi); 
}); 
 
butt.addEventListener('click', function() { 
  Array.from(li, function(item) { 
    item.removeEventListener('click', hi); 
    item.addEventListener('click', function() { 
      action('bye'); 
    }); 
  }); 
});
<ul> 
  <li>1</li> 
  <li>2</li> 
  <li>3</li> 
</ul> 
<button id="delete">Delete first click</button>

READ ALSO
Почему слайдер не работает?

Почему слайдер не работает?

Есть слайдер, который должен перелистывать картинки

90
react-redux Виджет комментариев

react-redux Виджет комментариев

Я обучаюсь сейчас reduxЗадача стоит в том, чтобы переписать виджет комментариев с одного react на redux

175
Фильтр на React

Фильтр на React

В state массив и функция:

128