我有一个包含以下结构和数据的表
<tr>
<td><input id="c1" type="checkbox"/></td>
<td>342</td>
<td>24</td>
<td>Jeff</td>
</tr>
<tr>
<td><input id="c2" type="checkbox"/></td>
<td>343</td>
<td>29</td>
<td>Libo</td>
</tr>
我想计算所有行的第三列的总值,并检查它们。因此,假设检查上面的两行,则第三列的值将为24 + 29 = 53
答案 0 :(得分:14)
var total = 0;
$("table tr:has(:checkbox:checked) td:nth-child(3)").each(function() {
total += parseInt($(this).text());
});
请参阅此fiddle。
答案 1 :(得分:2)
var total = 0;
Array.prototype.slice.call(document.getElementById('tableID').rows).
forEach(function(row) {
if (!row.childNodes[1].firstChild.checked) return;
total += parseFloat(row.childNodes[2].innerHTML);
});
OP要求只计算那些被检查的人。此答案仅计算已检查的行。
答案 2 :(得分:0)
var total = 0;
$("tr td:nth-child(3)").each(
function(){
total += $(this.text());
}
);
虽然这可能最终会将文本值连接在一起,但是根据其他答案,可能需要使用parseFloat将“text”值强制转换为数字。
var total = 0;
$("tr td:nth-child(3)").each(
function(){
total += parseFloat($(this.text()));
}
);
好的,现在要处理要求的“已检查”部分(我忽略了)
var total = 0;
$("tr td input:checked").closest("tr").find("td:nth-child(3)").each(
function(){
total += parseFloat($(this.text()));
}
);
答案 3 :(得分:0)
试试这个
<script>
$(document).ready(function(){
var total = 0;
$("td:nth-child(3n)").each(
function(){
total += parseInt($(this).text());
}
);
alert(total);
});
</script>