mrusklon
@mrusklon
Не получается? Яростно гугли!

Как в таблице подсветить колонки в зависимости от thead?

Есть таблица:

.red {
  background-color: red;
}

<table>
  <thead>
    <tr>
      <th>Имя</th>
      <th class="red">Фамилия</th>
      <th>Должность</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Павел</td>
      <td>Павлов</td>
      <td>ТЫЖпрограммист</td>
    </tr>
    <tr>
      <td>Павел</td>
      <td>Дуров</td>
      <td>миллионер</td>
    </tr>
  </tbody>
</table>

Если в thead есть класс, как подсветить соответствующие ячейки в tbody? Разметку можем менять только у thead, tbody надо как-то через css или jquery.
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
О какой таблице речь и что за класс отвечает за выделение ячеек:

const table = document.querySelector('table');
const className = 'red';

Сперва собираем индексы столбцов, заголовки которых имеют класс:

const indices = Array.from(table.querySelectorAll(`thead .${className}`), n => n.cellIndex);

Затем можно добавить класс ячейкам в теле таблицы:

table.querySelectorAll('tbody tr').forEach(n => {
  indices.forEach(i => n.cells[i].classList.add(className));
});

Или, кроме добавления, можно класс ещё и убирать (если вдруг есть) в тех столбцах, заголовок которого не подсвечен:

for (const { rows } of table.tBodies) {
  for (const { cells } of rows) {
    for (let i = 0, j = 0; i < cells.length; i++) {
      j += cells[i].classList.toggle(className, i === indices[j]);
    }
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 11:55
5000 руб./за проект
23 нояб. 2024, в 09:59
2000 руб./в час
23 нояб. 2024, в 08:36
2000 руб./за проект