我在<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,它就永远不会被提升。所以我的第二个循环一定是错的,但我不确定为什么?
答案 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')
另外,请始终将radix
与parseInt(strNum, radix)
答案 1 :(得分:2)
您的选择器应为#table1 .table-side-row._3
:
$('#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;
答案 2 :(得分:1)
第一个选择器有问题:
#table1 .table-side-row ._3
这将选择所有单元格,而不是行。
我会删除._3
,因为它不是必需的,也会让人感到困惑,因为同一个类适用于行和单元格。