> Как оптимизировать обработку кликов на ячейки большой таблицы в веб-приложении (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Exness, HolyWeb
Стек: JavaScript
> Пример ответа
Для оптимизации обработки кликов на ячейки большой таблицы в веб-приложении на JavaScript следует применить делегирование событий. Вместо того чтобы вешать обработчик на каждую ячейку (что создаёт тысячи слушателей и замедляет рендеринг), вешаем один обработчик на родительский элемент (например, <tbody> или <table>). Используем свойство event.target, чтобы определить, какая ячейка была кликнута, и обработать её.
Пример реализации:
JAVASCRIPTconst table = document.getElementById('large-table');table.addEventListener('click', (event) => {const cell = event.target.closest('td'); // или 'th'if (!cell) return; // клик не по ячейкеconst row = cell.closest('tr');const rowIndex = row.rowIndex; // индекс строкиconst cellIndex = cell.cellIndex; // индекс ячейкиconst cellData = cell.textContent; // содержимое// Логика обработкиconsole.log(`Клик по ячейке [${rowIndex}, ${cellIndex}]: ${cellData}`);});
Дополнительные оптимизации:
- Виртуализация: если таблица содержит десятки тысяч строк, используйте библиотеки (например,
react-virtualizedилиag-Grid) для рендеринга только видимых ячеек. - Throttle/Debounce: если обработка клика вызывает сложные вычисления или сетевые запросы, ограничьте частоту вызовов.
- Избегайте
innerHTML: при динамическом обновлении содержимого ячеек используйтеtextContentили фрагменты документа. - CSS-селекторы: для быстрого поиска целевого элемента используйте
closest()вместо сложных DOM-обходов.
Такой подход снижает потребление памяти, ускоряет начальную загрузку и улучшает отзывчивость интерфейса.
> Похожие задачи по frontend
Для чего нужен Webpack
Что такое fetch в JavaScript
Каков порядок выполнения кода с setTimeout, Promise и цепочкой then/catch в JavaScript?
В какой момент вызывается callback в конструкторе Promise в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью