4

我想出了这个函数来为我的表中的表行中的元素添加编号的类:

$('tr td:contains(".")').each(function(i){
     $(this).addClass("reportcellno-" + i);
});

基本上在这里,我正在搜索任何带有小数点的表格单元格,我想在每一行中对它们进行交互并添加类reportcellno-1reportcellno-2

这很好用,我整天都在玩它。唯一的问题是编号不断地进行,而不是逐行限制。

我上面的输出 HTML 代码是:

<tr>
<td class="reportcellno-1">10.1</td>
<td class="reportcellno-2">5.7</td>
</tr>

<tr>
<td class="reportcellno-3">10.6</td>
<td class="reportcellno-4">10.9</td>
</tr>

而我实际上是想得到这个:

<tr>
<td class="reportcellno-1">10.1</td>
<td class="reportcellno-2">5.7</td>
</tr>

<tr>
<td class="reportcellno-1">10.6</td>
<td class="reportcellno-2">10.9</td>
</tr>

所以基本上对于每个表格行,我想重新开始编号。我什至不确定这是否可能。

4

2 回答 2

6

改为tr

$('tr').each(function() {
   $(this).children('td:contains(".")').each(function(i) {
      $(this).addClass("reportcellno-" + i);
   });
});

编辑:少循环方式,但可能不太可读:

$('tr td:contains(".")').each(function(){
   $(this).addClass("reportcellno-" + (+$(this).index() + 1));
});​

td在这里,我们使用 a是 a 的子元素这一事实tr,并index()返回元素相对于其兄弟元素的位置。

文档

如果没有参数传递给 .index() 方法,则返回值是一个整数,指示 jQuery 对象中的第一个元素相对于其兄弟元素的位置。

于 2012-05-10T02:03:32.610 回答
0

一个简单的 js 解决方案,按行编号:

var rows = document.getElementsByTagName('tr');

for (var j=0, jLen=rows.length; j<jLen; j++) {
  var cell, cells = rows[j].getElementsByTagName('td');

  for (var i=0, iLen=cells.length, c=0, txt; i<iLen; i++) {
    cell = cells[i];
    txt = cell.innerText || cell.textContent;

    if ( txt.indexOf('.') > -1) {
      cell.className = cell.className + ' reportcellno-' + c++;
    }
  } 
}

通过表格连续编号:

var cell, cells = document.getElementsByTagName('td');

for (var i=0, iLen=cells.length, c=0, txt; i<iLen; i++) {
  cell = cells[i];
  txt = cell.innerText || cell.textContent;

  if (txt.indexOf('.') > -1) {
    cell.className = cell.className + ' reportcellno-' + c++;
  } 
}
于 2012-05-10T02:48:00.230 回答