获取html表中第二列的总和

时间:2017-11-25 08:01:45

标签: javascript jquery

输入:<table> <tr> <td>100</td> </tr> <tr> <td>200</td> </tr> </table>来自输入它应该返回总和= 300而不是我得到输出为100200

function Save_Name()
    {
        var Invoice = $("#text_invoice").val();
        var Name = $("#text_name").val();
        var Date = $("#text_date").val();
        var Amount = 0;
        var n = $("table").find("tr").length;
        if (n - 1 > 0)
        {
            for (var i = 0 ; i < n; i++)
            {
                var Amt = $("#table1").find("tr").eq(i).find("td").eq(2).text();
                Amount += parseFloat(Amt);

            }
        }
}

3 个答案:

答案 0 :(得分:0)

eq以0索引开头。输出100200是因为它连接字符串而不是添加值。还要使用parseInt将数字从字符串转换为整数。 / p>

function Save_Name() {
  var Amount = 0;
  // will get all tr
  var n = $("#table1 tr");
  n.each(function(i, v) {
    // table have only one td per tr so eq(0) will give first td
    // trim is used to remove any white space
    Amount += parseInt($(v).eq(0).text().trim(), 10)

  })
  console.log(Amount)
}
Save_Name()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="table1">
  <tr>
    <td>100</td>
  </tr>
  <tr>
    <td>200</td>
  </tr>
</table>

答案 1 :(得分:0)

这是另一种做同样事情的方法。基本上,我使用map来创建一个整数值的映射,然后我使用&#34; get&#34;将它们转换为数组,最后我使用reduce来计算数组中值的总和。

P.S。:要计算第二列,您只需使用nth-child(2)代替nth-child(1)

&#13;
&#13;
$(function(){
  var sum = $('#table1 tr td:nth-child(1)').map(function() {
    return parseInt($(this).html(), 10)
  }).get().reduce(function(a, v){
    return a + v;
  }, 0);

  console.log(sum);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table id="table1">
  <tr>
    <td>100</td>
  </tr>
  <tr>
    <td>200</td>
  </tr>
</table>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

我已警告总金额的值,它等于300。

你做了一些错误,如eq(2)而不是eq(0)

但这是工作片段:

function Save_Name()
    {
       
        var Amount = 0;
        var n = $('#test tr').length;
       // alert(n);
        if (n - 1 > 0)
        {
            for (var i = 0 ; i < n; i++)
            {
                var Amt = $("#test").find("tr").eq(i).find("td").eq(0).text();
                Amount += parseFloat(Amt);

            }
          alert(Amount);
        }
}

Save_Name();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id='test'>
  <tr> <td>100 </td></tr>
  <tr> <td>200 </td></tr> 
</table>