Мне нужно автоматически добавить data-*
ярлыки к td
на основе содержимого их th
.Таким образом, результат должен выглядеть примерно так:
<table class="table">
<thead class="bg-gray-100">
<tr>
<th>Heading 1</th>
<th>Heading 2</th>
<th>Heading 3</th>
<th>Heading 4</th>
</tr>
</thead>
<tbody>
<tr>
<td data-label="Heading 1">table cell content</td>
<td data-label="Heading 2">table cell content</td>
<td data-label="Heading 3">table cell content</td>
<td data-label="Heading 4">table cell content</td>
<td data-label="Heading 5">table cell content</td>
</tr>
</tbody>
</table>
Несмотря на то, что существует множество решений jQuery, мне нужно сделать это с помощью простого JavaScript
. Для репрезентативных решений jQuery смотрите:1. Как скопировать соответствующий заголовок таблицы (th) в ячейку таблицы (td)?
Извлечь содержимое в атрибут метки данных td
https://j.eremy.net/responsive-table/)
Я бы хотел, чтобырешение использовать element.cellIndex
, но не могу заставить его работать.
Я предпринял различные попытки с ошибками.
Это моя последняя неудачная попытка:
function addMobileTableData() {
var table = document.querySelector('.table');
var th = table.querySelectorAll('th');
var td = table.querySelectorAll('td');
var tdCollection = Array.from(td);
var thCollection = Array.from(th);
var thCount = th.length;
tdCollection.forEach(function(tdItem, index){
for (index = 0; index < thCount; index++) {
var headerLabel = thCollection[index].innerHTML;
console.log(headerLabel);
tdItem.setAttribute('data-th', headerLabel[index]);
};
});
};
Это явно неверно.Он присваивает метку data-th
каждому td
, но добавляет только первый символ в последней строке к каждому td
.
Подсказки приветствуются, если вы спешите.Объяснение того, что я делаю неправильно, было бы здорово.Полное рабочее решение будет Fan-Freaking-Tastic.
Но я возьму то, что смогу получить.
Спасибо.