2

これは少し奇妙な質問に思えるかもしれませんが、それが可能かどうかはわかりません。

WordPress で HTML テーブルを作成し、投稿データをテーブル形式で出力する PHP ループを作成しました。

このjQueryテーブルソートプラグインを使用して、ソート可能なテーブルにしています。

<th>Hours</th>しかし、私の質問は、jQuery を使用してテーブル列のすべての数値を合計し、結果を出力することは可能ですか?

クラスをセルに追加する必要がある場合<td><?php echo get_post_meta($post->ID, 'Labour Time Hours', true); ?></td>、それは素晴らしいことです。テーブルソーターには影響しません。

次に、結果をテーブル フッター セルに出力したいと思います。

これは可能ですか?Google で何も見つからないようですが、おそらく間違った用語を検索しています。

ありがとう

MY WORDPRESS ループ生成テーブル コンテンツ

<?php 

        $data = new WP_Query(array(

        'post_type'         => 'job',
        'order'             => 'ASC',
        'posts_per_page'    => -1,
        'orderby'           => 'date'

)); ?>

<?php if ($data->have_posts()) : ?>

<table id="myTable" class="tablesorter"> 

    <thead> 

        <tr> 

            <th>Date</th> 
            <th>Job Title</th> 
            <th>Category</th> 
            <th>Hours</th> 

        </tr> 

    </thead> 

    <tbody> 

        <?php while ($data->have_posts()) : $data->the_post(); ?>

        <tr> 

            <td><?php the_time('Y/m/d'); ?></td> 
            <td><a href="<?php the_permalink() ?>" title="View Job" ><?php the_title(); ?></a></td> 
            <td><?php the_category(', ') ?></td> 
            <td><?php echo get_post_meta($post->ID, 'Labour Time Hours', true); ?></td> 

        </tr> 

        <?php endwhile; ?>

    </tbody>

    <tfoot>

        <tr>

            <td></td>
            <td></td>
            <td></td>
            <td><!-- Total to go here --></td>

        </tr>

    </tfoot>

</table>

<?php unset($data); endif; wp_reset_query(); ?>
4

4 に答える 4

2

これを行う簡単な方法は、合計したい要素にクラスを割り当てることです。

したがって、次のようにします。

<td class="add">5</td>
<td class="add">8</td>
<td id="Total"></td>

次に、これらの値が常にint(またはfloat)であることに絶対に確信がある場合は、これを行うことができます

function adding() {
    var total = 0;
    $(".add").each(function(index, element) {
        total += parseInt($(element).text());
    });
    $("#Total").text(total);
}
于 2012-06-12T18:03:39.900 に答える
1

これはかなり単純な jQuery で行うことができます。

var $table = $('#myTable'),
    $tr = $table.find('tbody tr'),
    totalHours = 0;

$tr.each(function(i, el){
    totalHours += parseInt($(this).find('td:last').html() || 0, 10);
});

$table.find('tfoot td:last').html(totalHours);

デモを見る

于 2012-06-12T18:03:50.813 に答える
0

サーバーimoに追加するのが最善ですが、これを行うことができます:

var total = 0;

 $("td.whateverClass").each(function () 
    { 
        total += $(this).text();

    }
于 2012-06-12T18:01:29.570 に答える
0

クラスhoursをそれぞれの表のセルに追加します<td class='hours></td>'

次に、このようにjQueryできます。

var sum = 0;

それから

$('tbody td.hours').each(function(index, td)) { sum += parseInt(td.html()); });

そして最後に

$('tfoot td.hours').html(sum);

于 2012-06-12T18:01:56.087 に答える