Задать вопрос

Как сделать обработку событий для всех элементов в таблицы?

Генерирую таблицу с помощью функции createEl вот ее описание https://docs.obsidian.md/Plugins/User+interface/HT...
то есть если схематично то я просто делаю

table = createEl('table');
th = table.createEl("thead");
tr = th.createEl("tr");
td = tr.createEl("td");

итд, в ячейках таблицы генерирую например селект или инпут, если сразу после генерации хтмл элемента добить обработчик события то все работает
input = td.createEl("input");
input["className"] = "inlinedb-input"
input.addEventListener('change', update_js);

Но я узнал что лучший вариант это добавлять обработчики после формирования таблицы, так как это обещает лучшее быстродействие
но вот так не работает
table.querySelectorAll('.inlinedb-input').forEach((x) => x.addEventListener('change', update_js));

Не понимаю как это все отладить и куда смотреть
  • Вопрос задан
  • 981 просмотр
Подписаться 3 Простой 9 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию
    6 месяцев
    Далее
Решения вопроса 1
suppcolor
@suppcolor
Data Scientist, PhD (medicine)
Обработчик срабатывает после клика по любому элементу таблицы, затем по id элемента, по которому кликнули (event.target.id) вызываем функцию. Можно сделать универсальный обработчик всех кликов для всего документа, тогда window.addEventListener()

table.addEventListener('click', (event) => {
  if (event.target.id === "submit_id") {
    submit_function();
  }
})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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