Jquery-计算列“值”的平均值,并将其放在另一列的每个td中

时间:2012-08-31 09:29:25

标签: jquery jquery-ui jquery-plugins

假设我有一张这样的表:

<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中。结果应该像这张图片:

enter image description here

请注意,我使用搜索框过滤表格中的结果,每次用户搜索时行数都会发生变化。

2 个答案:

答案 0 :(得分: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));

Working sample

注意

+$('td:eq(0)', this).text(),此处开头+将文本转换为数字。

答案 1 :(得分: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));
});

The working demo.