计算一列的总和--jQuery?

时间:2014-06-08 08:14:59

标签: jquery html sum

我想计算表格中特定列的值之和。

表格如下:

<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);
        });
    });

3 个答案:

答案 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