Пробую сделать делегирование таким способом. Ставлю один обработчик событий на весь код. Первые два условия работают без проблем, но в третьем не могу добавить класс. В консоли выходит: Uncaught TypeError: Cannot read property 'add' of undefined. Почему? Или я не правильно делаю делегирование?
document.body.addEventListener("click", function(event) {
if (event.target.classList.contains('place-card__delete-icon')) {
event.target.parentNode.remove();
}
if (event.target.classList.contains('place-card__like-icon')) {
event.target.classList.toggle('place-card__like-icon_liked');
}
if (event.target.classList.contains('user-info__button-add')) {
formAddPlace.classList.add('popup__new_is-opened');
}
if (event.target.classList.contains('user-info__button-edit')) {
console.log("Clicked", event.target.textContent);
}
});```
document.querySelectorAll возращает не элемент а NodeList (Дока)
Отюда и проблема. У элемента NodeList не бывает поля classList.
Ты или индивидуально перебором (через циклы или forEach - это если у тебя несколько элементов .popup__new) или если он один то const formAddPlace = document.querySelector('.popup__new');
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости