0

このテーブルを変更したい:

ここに画像の説明を入力

それはjQueryで可能ですか?

はいの場合は、同様の例または回避策を送ってください。

編集:すべてのtdの読み方を知っていました

$('#tableid tbody tr').each(function() {

    $.each(this.cells, function(){
        var celltext = $(this).text();
    });

});

また、同様の値を 1 つのセルにグループ化する方法は次のとおりです。

var $rows = $('#tableid tbody tr');
var items = [],
    itemtext = [],
    currGroupStartIdx = 0;
$rows.each(function(i) {
    var $this = $(this);
    var itemCell = $(this).find('td:eq(0)');
    var item = itemCell.text();
    itemCell.remove();
    if ($.inArray(item, itemtext) === -1) {
        itemtext.push(item);
        items.push([i, item]);
        groupRowSpan = 1;
        currGroupStartIdx = i;
        $this.data('rowspan', 1)
    } else {
        var rowspan = $rows.eq(currGroupStartIdx).data('rowspan') + 1;
        $rows.eq(currGroupStartIdx).data('rowspan', rowspan);
    }

});

$.each(items, function(i) {
    var $row = $rows.eq(this[0]);
    var rowspan = $row.data('rowspan');
    $row.prepend('<td rowspan="' + rowspan + '" style="white-space:nowrap;">' + this[1] + '</td>');
});

これはこれまでの PHP ソリューションです。

foreach($tabledata as $key => $val){
 $rowspan = (count($val) > 1 ? ' rowspan="'.count($val).'" ' : '');
   $spancount = 0;
   foreach($val as $vkey => $vval){
     $spancount++;
      echo '
      <tr>
      ';
       if($spancount == 1){
        echo '
        <td'.$rowspan.'>'.$key.'</td>
        ';
       }
      echo '
      <td>'.$vval[0].'</td>
      ';
      echo '
      <td>'.$vval[1].'</td>
      ';
     if($spancount == 1){
      echo '
      <td'.$rowspan.'>'.$sums[$key].'</td>
      ';
     }
      echo '</tr>
      ';
   }
}
4

2 に答える 2

2

さて、私はそれを撃った。私は自由にクラス名を TD と TR に入れました。JavaScript はかなりクリーンアップできますが、うまくいきます。

var first_row = '<tr class="row"><td class="id">NULL</td></tr>';
var rowCount = 0;
var rowSum = 0;
$.each($('.row'), function (index, curRow) {
    if ($(first_row).find('.id').text() != $(curRow).find('.id').text()) {
        if (rowCount > 1) {
            $(first_row).find('.val').text(rowSum);
            $(first_row).find('.val').attr('rowspan', rowCount).css('background-color','silver');
            for (i = 0; i < rowCount; i++) {
                $(first_row).next('.row').find('.val').remove();
            }
        }
        first_row = $(curRow);
        rowSum = 0;
        rowCount = 0;
    }
    rowSum += parseInt($(curRow).find('.val').text());
    rowCount += 1;
});
if (rowCount > 1) {
    $(first_row).find('.val').text(rowSum);
    $(first_row).find('.val').attr('rowspan', rowCount).css('background-color','silver');
    for (i = 0; i < rowCount; i++) {
        $(first_row).next('.row').find('.val').remove();
    }
}

デモへのリンク

于 2013-07-07T18:59:37.777 に答える