0

次のようなテーブルがあるとしましょう。

<table cellpadding="0" cellspacing="0" border="0" class="display" id="selection">
    <th>Values</th>
    <th>Average</th>
    <tbody>
        <tr>
            <td>5</td>
            <td></td>       
        </tr>   
        <tr>
            <td>0.9</td>
            <td></td>       
        </tr>  
        <tr>
            <td>2</td>
            <td></td>       
        </tr>  
        <tr>
            <td>6</td>
            <td></td>       
        </tr>  
    </tbody>
</table>

列「値」の平均を計算し、Jqueryを使用して平均列の各tdに入れたいです。結果は次の図のようになります。

ここに画像の説明を入力

検索ボックスを使用してテーブルの結果をフィルタリングすると、ユーザーが検索するたびに行数が変わることに注意してください。

4

2 に答える 2

3
var sum = 0,
    count = -1,
    all = $('#selection > tbody > tr');
all.each(function() {
    sum += +$('td:eq(0)', this).text();
    count++;
});
all.find('td:eq(1)').text((sum / count).toFixed(3));

作業サンプル

ノート

+$('td:eq(0)', this).text()、ここで最初の+歌はテキストを数字に変換します。

于 2012-08-31T09:34:47.107 に答える
1
var sum = 0, rows = $('#selection tbody tr');

rows.each(function() {
  sum += parseFloat($(this).children('td').eq(0).text());
});

rows.each(function() {
  var tds = $(this).children('td'), value = parseFloat(tds.eq(0).text());
  $(this).children('td').eq(1).text((value/sum).toFixed(3));
});

動作デモ。

于 2012-08-31T09:38:58.050 に答える