@yagyar001

Как привязать событие на вставленный (createElement) тег?

Всем привет. Учу js. Нужно при клике на кнопку вставить тег li. И при клике на li добавить в конец, того тега, на который был клик, ! знак. li добавляются с этим все хорошо, а вот при клике на любой li, кроме первого ничего не происходит. А если кликнуть на первый li, то ! знаки добавляются к первому li в количестве всех пунктов меню. Помогите найти ошибку.
<button id="button">click me</button>
<ol id="elem"></ol>


let button = document.querySelector('#button');
let elem = document.querySelector('#elem');


button.addEventListener('click', function(){
	let li = document.createElement('li');
	li.innerHTML = 'пункт';
	li.className = 'itemLi';
	elem.appendChild(li);
	let itemLi = document.querySelector('.itemLi');
	itemLi.addEventListener('click', function(){
		this.innerHTML += '!';
	});
});
  • Вопрос задан
  • 319 просмотров
Решения вопроса 3
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега JavaScript
Руководитель frontend направления, предприниматель
У тебя уже есть узел li, на него и вешай слушатель.
Ответ написан
Avilona
@Avilona
исправьте eventListener, который вы хотите привязать к клику на li вот так
Ответ написан
У вас функция querySelector отбирает только первый попавшийся элемент с указанным классом, поэтому только на нем и срабатывает. Вешайте обработчик на создаваемый элемент li
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы