почему this плодится?
Вложений: 1
Доброго времени суток,
вот есть такой код: <div class = "div1">1</div> <div class = "div2">2</div> <div class = "div3">3</div> <div class = "div4">4</div> <select class = "select1"> <option>10</option> <option>20</option> <option>30</option> <option>40</option> </select> document.querySelectorAll('[class^="div"]').forEach((elem) => { elem.addEventListener('click', getIt); }); function getIt() { let target = this; document.getElementsByClassName('select1')[0].addEventListener('change', pasteC(target)); } function pasteC(target) { return () => { console.log(target.textContent); } } Всё бы ничего, но вот никак не пойму почему плодиться this. Если прокликать по дивам, а потом что-то выбрать в селекте, то в консоле появиться всё что кликал. Почему так происходит? |
в JS this имеет динамическую природу и фактическое его значение определяется в момент фактического вызова функции.
|
atanov,
При каждом клике на div у вас добавляется слушатель события на селект. addEventListener не заменяет обработчик события, а добавляет новый. |
Белый шум, да, это я уже понял. Наверное лучше было бы create элемент и удалять, вместе со всеми обработчиками. или костылём ...onchange = handler.
|
Часовой пояс GMT +3, время: 09:49. |