@danshu

Динамическое создание тега на JS, почему не сработает обработчик событий?

let input = document.getElementById('input')
let btn = document.getElementById('btn')
let total = document.getElementById('total')
let ol = document.getElementById('ol')


btn.addEventListener('click', function () {
    const li = document.createElement('li')
    li.className = 'li'
    li.textContent = input.value
    if (input.value != ''){
        ol.appendChild(li)
        input.value = ''
        total.textContent ++
    }
    

    li.addEventListener('click', function() {
        li.classList.add('li_click')
if ( total.textContent != 0){
        total.textContent--
}})

})

При нажатии на новый созданный элемент li должен применяться стиль, зачеркивающий его. Объясните пожалуйста, почему почему обработчик события для li нужно обязательно записывать внутри функции обработчика события для btn? Ведь мы создаем новый li при клике на btn, и он попадает в DOM
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Ведь мы создаем новый li при клике на btn, и он попадает в DOM
Ну да, попадает. А чтобы что-то с ним делать, нужно навесить обработчик события. Совершенно непонятно, что вас в этом процессе удивляет.
Вы можете делегировать обработку события родительскому контейнеру (<ol />) и тогда навешивать отдельные обработчики на создаваемые элементы не придётся.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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