Строки таблицы автосочетания?
У меня есть следующая таблица HTML:
<table border="1">
<tr>
<td>blue</td>
</tr>
<tr>
<td>red</td>
</tr>
<tr>
<td>black</td>
</tr>
</table>
Я бы хотел, чтобы каждая строка в этой таблице автоматически присваивала номер каждому элементу.
Как он мог это сделать?
Ответы
Ответ 1
Следующий CSS перечисляет строки таблицы (demo):
table {
counter-reset: rowNumber;
}
table tr {
counter-increment: rowNumber;
}
table tr td:first-child::before {
content: counter(rowNumber);
min-width: 1em;
margin-right: 0.5em;
}
table {
counter-reset: rowNumber;
}
table tr {
counter-increment: rowNumber;
}
table tr td:first-child::before {
content: counter(rowNumber);
min-width: 1em;
margin-right: 0.5em;
}
<table border="1">
<tr>
<td>blue</td>
</tr>
<tr>
<td>red</td>
</tr>
<tr>
<td>black</td>
</tr>
</table>
Ответ 2
И если вы также будете использовать заголовки, то вам понадобится следующее:
http://jsfiddle.net/davidThomas/7RyGX/
table {
counter-reset: rowNumber;
}
table tr:not(:first-child) {
counter-increment: rowNumber;
}
table tr td:first-child::before {
content: counter(rowNumber);
min-width: 1em;
margin-right: 0.5em;
}
обратите внимание на следующее: ": not (: first-child)".
Ответ 3
Вот модификация CSS-решения David Thomas, которая работает с или без строки заголовка в таблице. Он увеличивает счетчик в первой ячейке td
каждой строки (тем самым пропуская строку только с ячейками th
):
table
{
counter-reset: rowNumber;
}
table tr > td:first-child
{
counter-increment: rowNumber;
}
table tr td:first-child::before
{
content: counter(rowNumber);
min-width: 1em;
margin-right: 0.5em;
}
Вы можете увидеть поведение this jsfiddle.
Ответ 4
Здесь javascript-решение, которое добавит ячейку в начале каждой строки, эта ячейка будет использоваться для нумерации, если есть ячейка th
, она получает атрибут colspan=2
.
var addNumeration = function(cl){
var table = document.querySelector('table.' + cl)
var trs = table.querySelectorAll('tr')
var counter = 1
Array.prototype.forEach.call(trs, function(x,i){
var firstChild = x.children[0]
if (firstChild.tagName === 'TD') {
var cell = document.createElement('td')
cell.textContent = counter ++
x.insertBefore(cell,firstChild)
} else {
firstChild.setAttribute('colspan',2)
}
})
}
addNumeration("test")
<table class="test" border="1">
<tr>
<th>hi!</th>
</tr>
<tr>
<td>blue</td>
</tr>
<tr>
<td>red</td>
</tr>
<tr>
<td>black</td>
</tr>
</table>