自动编号表行?

Mic*_*ael 44 javascript html-table

我有以下HTML表格:

<table border="1">
  <tr>
    <td>blue</td>
  </tr>
  <tr>
    <td>red</td>
  </tr>
  <tr>
    <td>black</td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

我希望此表中的每一行都有一个自动分配给每个项目的数字.

他怎么办?

Dav*_*mas 84

以下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;
}
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)
<table border="1">
  <tr>
    <td>blue</td>
  </tr>
  <tr>
    <td>red</td>
  </tr>
  <tr>
    <td>black</td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

如果无法使用CSS,请尝试以下JavaScript代码(演示):

var table = document.getElementsByTagName('table')[0],
    rows = table.getElementsByTagName('tr'),
    text = 'textContent' in document ? 'textContent' : 'innerText';

for (var i = 0, len = rows.length; i < len; i++){
    rows[i].children[0][text] = i + ': ' + rows[i].children[0][text];
}
Run Code Online (Sandbox Code Playgroud)

var table = document.getElementsByTagName('table')[0],
  rows = table.getElementsByTagName('tr'),
  text = 'textContent' in document ? 'textContent' : 'innerText';

for (var i = 0, len = rows.length; i < len; i++) {
  rows[i].children[0][text] = i + ': ' + rows[i].children[0][text];
}
Run Code Online (Sandbox Code Playgroud)
<table border="1">
  <tr>
    <td>blue</td>
  </tr>
  <tr>
    <td>red</td>
  </tr>
  <tr>
    <td>black</td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

  • +1我删除了我的答案,因为我没有为.textContent`提供修复,但我真的建议使用自动提供的`.rows`和`.cells`集合而不是`getElementsByTagName() `和`.children`. (2认同)

小智 24

如果您也使用标题,则需要以下内容: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;
}
Run Code Online (Sandbox Code Playgroud)

注意:":不是(:第一个孩子)"在那里.

  • 您已链接到JS Fiddle演示,该演示不包含您问题中的jQuery.如果你添加jQuery并且(可能)删除已经使其工作的JS Fiddle中的CSS,然后点击屏幕顶部的"更新"按钮,你将有一个演示来演示*your*code而不是比我的.我认为哪个对你更有用.否则,您可以使用"堆栈片段"将基于前端(HTML,CSS和JavaScript)的代码嵌入到答案中(单击[编辑],然后单击textarea上方的"</>"按钮). (2认同)

Con*_*Fan 10

以下是David Thomas的CSS解决方案的修改,该解决方案在表格中有或没有标题行.它会递增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;
}
Run Code Online (Sandbox Code Playgroud)

你可以在这个jsfiddle中看到行为.