Javascript 处理数值时出现奇怪的JS问题

Javascript 处理数值时出现奇怪的JS问题,javascript,html,html-table,sum,numeric,Javascript,Html,Html Table,Sum,Numeric,其思想是每次选中复选框时刷新总值 我的HTML看起来是这样的 <table class="table table-striped table-bordered table-hover"> <tbody> ... <tr> <td><input

其思想是每次选中复选框时刷新总值

我的HTML看起来是这样的

<table class="table table-striped table-bordered table-hover">


                                <tbody>
...
                                <tr>
                                    <td><input type="checkbox" name="services[]" value="5" class="services"></td>
                                    <td>Sample</td>
                                     <td id="srv_5">60</td>
                                    </tr> 
 ...                    
</tbody>

                        </table>
function calcServicesTotal() {
    var total=0;
    $('.services').each(function () {
        var id = parseInt($(this).val());
        var price = parseInt($("#srv_" + id).text());
        if (this.checked) {
            total = total + price;
            console.log("id - " + id + " price - " + price);
        }
        else {
            if (total > 0)
                total = total - price;
        }

    });
    console.log("total - " + total);
}
问题是我可以看到
console.log(“id-”+id+“price-”+price)正确的值,但每次0时总计保持不变。我做错了什么?

这毫无意义

else {
    if (total > 0)
        total = total - price;
}
否则没有任何意义,因此如果复选框未选中,则进行减法。因此,如果选中第一个复选框,它将使总计>0,并且所有复选框均未选中,则开始减去它们的值,直到其为零


那张支票不属于那里

我在Chrome控制台中看到了总计为60的
total。调用
calcServicesTotal()
的代码在哪里?在复选框被识别为已选中之前,您可能调用它太早了。可能是JSFIDLE?@heron可能是您的逻辑期望值为零?另外,您确定您的
else
子句应该在那里吗?如果当前未选中该复选框,我同意您不想将其添加到
总数中,但为什么要从中减去?那么您的解决方案是什么?