我想计算表格中特定列的值之和。
表格如下:
<table>
<tbody>
<tr>
<td>Old cost</td>
<td class="oldCost">9 990,-</td>
</tr>
<tr class="discount">
<td>Service - 2</td>
<td>2 000,-</td>
</tr>
<tr class="template">
<td>Theme - 3</td>
<td>0,-</td>
</tr>
<tr class="result">
</tr>
</tbody>
</table>
问题是值是这样的(X XXX, - )所以我需要修剪(或爆炸?)它到正常数字和然后创建所有的总和数字并在<tr class="result>
我尝试了很多方法,但我唯一得到的是NaN显示而不是总和。 不包括修剪功能,因为我没有为它找到合适的功能。
$("table").change(function(){
var theTotal = 0;
$("td:nth-child(2)").each(function () {
theTotal += parseInt($(this).val());
$(".result").text(theTotal);
});
});
答案 0 :(得分:2)
由于您在代码中使用parseInt
,我假设您希望所有价格都是整数值,并且始终以字符串&#34;, - &#34;结尾。如果我的假设成立,则以下代码应该有效:
$("table").change(function(){
var theTotal = 0;
$("td:nth-child(2)").each(function () {
var val = $(this).text().replace(" ", "").replace(",-", "");
theTotal += parseInt(val);
});
$(".result").html('<td colspan="2">' + theTotal + ',- </td>');
});
代码从整数部分中删除空格,并删除&#34;空小数&#34;令牌。请参阅the replace function reference。
如果我的假设是错误的,意味着价格可以是浮动值,您可以删除破折号并用点替换逗号,然后使用parseFloat
。
答案 1 :(得分:1)
你不应该使用&#34; val&#34;对于&#34; td&#34;的内容,也不会&#34;更改&#34;在桌子上工作。 你必须创建一个函数并让它触发任何javascript更改tds中的值,如此(这将删除所有不是数字或小数点的字符):
tablechange = function(){
var theTotal = 0;
$("tr:not(:last-child) td:nth-child(2)").each(function () {
theTotal += parseFloat($(this).html().replace(/[^0-9.]/g,''));
});
$(".result").text(theTotal);
};
tablechange();
答案 2 :(得分:0)
您希望$(this).html
而非$(this).val
获取每个表格单元格内的文字。然后在使用substr
的逗号后修剪所有内容,并使用replace
折叠空格,然后将这些数字加在一起:
var value;
var theTotal = 0;
$("td:nth-child(2)").each(function () {
value = $(this).html();
value = value.substr(0, value.indexOf(','));
value = value.replace(' ', '');
theTotal += parseInt(value);
$(".result").text('Total: ' + theTotal);
});
这是 jsFiddle