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));
});​

ここでは、atdが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 に答える