@just_clarity

Как правильно задать addEventListener?

Генерирую чекбоксы по нажатию кнопки так.
Как правильно задать addEventListener чтобы получать value нажатого чекбокса?
function loadsett() {
    var data = httpGet("api?action=sett")
    var json_answer = JSON.parse(data);
    //console.log(json_answer);
    var settParent = document.getElementById('sett');
    for (let index = 0; index < json_answer.data.length; ++index) {
        const element = json_answer.data[index];
        console.log(element);

        var label = document.createElement('label');
        label.setAttribute("class", "form-check");
        settParent.appendChild(label);

        var newCheckBox = document.createElement('input');
        newCheckBox.type = 'checkbox';
        newCheckBox.id = 'settid' + index;
        newCheckBox.value = json_answer.data[index].id;
        newCheckBox.name = "firstChecks[]";
        newCheckBox.setAttribute("class", "form-check-input");
        label.appendChild(newCheckBox);

        var labelspan = document.createElement('span');
        labelspan.setAttribute("class", "form-check-label");
        labelspan.appendChild(document.createTextNode(json_answer.data[index].tex1 + " " + json_answer.data[index].tex2));
        label.appendChild(labelspan);
        
        var elem = document.getElementById(newCheckBox.id).addEventListener('change', function() {
            console.log(elem);
        });

    }
}
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Когда элементы создаются-добавляются динамически, удобно использовать делегирование событий:
слушать клики не на самих чекбоксах, а выше, на общем родителе, на этом settParent.

Тогда не нужно вешать слушателя на каждый новый чекбокс.
settParent.addEventListener('input', ({ target }) => console.log(target.value));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час
21 нояб. 2024, в 21:42
100000 руб./за проект