【问题标题】:Get Sum of 2nd <td> in every <tr> in Table获取表中每个 <tr> 中第二个 <td> 的总和
【发布时间】:2013-08-23 22:55:00
【问题描述】:

我想计算每一行中第二个 &lt;td&gt; 项目的总和,并将总和到我的 div 中。

我的JS如下

$('.table tbody tr:gt(0)').each(function () {

var mixTotal = parseInt($(this).find('td:nth(2)').html());

// Add total to div 
$('.totals').text(mixTotal);
});

在这里演示http://jsfiddle.net/5pnMh/1/

我的 Html 是一个标准的 HTML 表格,其中包含一个 thead tbodytfoot

我似乎无法让它工作。我可以获取每个值,但不确定如何添加它们。

寻求帮助

【问题讨论】:

  • 由于我无法从您的措辞中看出总数应该是多少,所以总数应该是多少?您希望总和中包含最后一行(tfoot 中)吗?
  • 不,我没有——这就是为什么我的代码中只有 tbody。为什么投反对票??

标签: javascript jquery html-table


【解决方案1】:
var mixTotal = 0;
$('tbody tr').each(function () {
    mixTotal += parseInt($(this).find('td:eq(1)').text(),10);
});
$('.totals').html(mixTotal);

jsFiddle

您的最后一行数字不会包含在 TOTAL 中,因为它是 &lt;tfoot&gt;。另请注意,仅仅因为您的第一行是&lt;thead&gt;,您不能省略&lt;tr&gt;&lt;/tr&gt; 标签。

【讨论】:

    【解决方案2】:

    我认为最好将结果存储在变量中并在循环后将其附加到 div。

    // Set global var
    var mixTotal = 0;
    $('.table tbody tr').each(function () {
        // Just add the number
        mixTotal = mixTotal+parseInt($(this).find('td:nth-child(2)').html());
    });
    // And finally, add total to div 
    $('.totals').text(mixTotal);
    

    http://jsfiddle.net/5pnMh/3/

    如果您将:nth(2) 替换为:nth-child(2),您的代码可能部分有效。

    【讨论】:

    • 你在 parseInt 中留下了基数。
    【解决方案3】:

    如果您要对第二列中的值求和,请尝试以下操作:

    var mixTotal = 0;
    $('.table tbody tr').add('.table tfoot tr').each(function () {
        mixTotal += parseInt($(this).find('td:eq(1)').text(), 10);   
    });
    $('.totals').text(mixTotal); // Add total to div
    

    jsFiddle example

    【讨论】:

    • 你在无用地重写.totals html。将其移出loop
    • OP 在哪里要求在他的总数中也包括 &lt;tfoot&gt; 行?
    • @DevlshOne - 他不是在哪里?
    • @j08691 所以,只要你不叫我不要用公共汽车撞你就可以了?
    • @M1K1O - 是的。对“无用”有点苛刻,但因为它是多余的而更新。
    【解决方案4】:

    如果你得到十进制数字,请使用此代码

    var mixTotal = 0;
    $('tbody tr').each(function () {
        mixTotal += parseFloat($(this).find('td:eq(1)').text(),10);
    });
    $('.totals').html(mixTotal);
    

    Demo

    【讨论】:

      【解决方案5】:

      var mixTotal = 0;
       $('#your_table_id tbody tr').each(function () {           
                  mixTotal = mixTotal + (isNaN(parseInt($(this).find('td:eq(1)').text(), 10)) ? 0 : parseInt($(this).find('td:eq(1)').text(),10))
              });
              
              $('.totals').html(mixTotal);
      
      if u have both types of values like text or nan value

      【讨论】:

        猜你喜欢
        • 2012-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-04
        相关资源
        最近更新 更多