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

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

Генерирую таблицу с помощью функции 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));

Не понимаю как это все отладить и куда смотреть
  • Вопрос задан
  • 955 просмотров
Подписаться 3 Простой 9 комментариев
Решения вопроса 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();
  }
})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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