Подтвердить что ты не робот

Строки таблицы автосочетания?

У меня есть следующая таблица HTML:

<table border="1">
  <tr>
    <td>blue</td>
  </tr>
  <tr>
    <td>red</td>
  </tr>
  <tr>
    <td>black</td>
  </tr>
</table>

Я бы хотел, чтобы каждая строка в этой таблице автоматически присваивала номер каждому элементу.

Как он мог это сделать?

4b9b3361

Ответ 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>