获取所有值以在JQuery中提供行总计

时间:2016-01-14 14:16:48

标签: jquery

我在<tr>中有一系列table我想通过获取并添加所有td值来获取行总数。我在控制台日志中工作,我得到了一系列td单元格,如:

[<td class="_3">4</td>, <td class="_3">8</td>, ...] 

表格html是

 <tr class="_3 table-side-row">
    <td class="_3">4</td>
    <td class="_3">8</td>
    ...
 </tr>

我的Jquery

$('#table1 .table-side-row ._3').each(function () {
    // initialize row count
    var sum = 0;
    //find the td value in current row and sum it
    $(this).find('td').each(function () {
        var cell = $(this).html(); // also tried val() here
            sum += parseInt(cell);

    });
    // alert row total
    alert(sum);
});

这会多次警告0。如果我在第二个循环中调用alert,它就永远不会被提升。所以我的第二个循环一定是错的,但我不确定为什么?

3 个答案:

答案 0 :(得分:2)

目前的问题是选择器$('#table1 .table-side-row ._3')引用的td元素不是tr。因此,$(this).find('td')将返回空对象,因此您将获得0

将选择器更改为

$('#table1 .table-side-row._3'); //or $('#table1 .table-side-row')

而不是

$('#table1 .table-side-row ._3')

另外,请始终将radixparseInt(strNum, radix)

一起使用

答案 1 :(得分:2)

您的选择器应为#table1 .table-side-row._3

&#13;
&#13;
$('#table1 .table-side-row._3').each(function() {
  // initialize row count
  var sum = 0;
  //find the td value in current row and sum it
  $(this).find('td').each(function() {
    var cell = $(this).html(); // also tried val() here
    sum += parseInt(cell);

  });
  // alert row total
  alert(sum);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="table1">
  <tr class="_3 table-side-row">
    <td class="_3">4</td>
    <td class="_3">8</td>
  </tr>
</table>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

第一个选择器有问题:

#table1 .table-side-row ._3

这将选择所有单元格,而不是行。

我会删除._3,因为它不是必需的,也会让人感到困惑,因为同一个类适用于行和单元格。