@sergemin

Почему не срабатывает функция для для элементов, добавленных с помощью js?

Всем привет!
Я с js знаком мало, только в теории и поэтому на практике возникают проблемы.
Хочу создать простую панель со списком
<div class="wrapper">
    <ul id="buttons">
        <li>up</li>
        <li>down</li>
        <li>add</li>
        <li>edit</li>
        <li>remove</li>
    </ul>
    <ul class="blocks">
        <li class='active'>some text</li>
        <li>another text</li>
    </ul>
</div>

Так вот я хочу написать код для управления этими элементами li
При клике на любом из элементов, ему должен присвоиться класс active
При нажатии на up выбранный элемент перемещается на одну позицию вверх и т.д.

Проблема в том, что на новоиспеченные элементы
document.querySelectorAll('#buttons>li')[2].addEventListener('click', function() {
     var newElem = document.createElement('li');
     var promptText = prompt('State text', 'Your default message');
     newElem.innerHTML = promptText;
})

не работает код для присвоения класса active, который я написал перед функцией
Почему так происходит? С чем связано? Не могу разобраться
  • Вопрос задан
  • 382 просмотра
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Почему так происходит? С чем связано? Не могу разобраться

Когда Вы навешиваете обработчики, элементов еще нет, когда Вы их создаете обработчики уже повешены
Соответственно на вновь создаваемые элементы необходимо так же вешать обработчики
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Afadeev
Front-end разработчик
Потому что событие надо вешать относительно родительского не динамического элемента, например body. Тогда все получится
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
03 мая 2024, в 22:18
1000 руб./за проект
03 мая 2024, в 21:57
1000 руб./за проект
03 мая 2024, в 21:47
500 руб./за проект