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

时间:2013-12-12 14:01:09

标签: javascript html html-table sum numeric

我们的想法是每次选中复选框时刷新总值。

我的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.我做错了什么?

1 个答案:

答案 0 :(得分:1)

这没有任何意义

else {
    if (total > 0)
        total = total - price;
}

其他根本没有意义,所以如果未选中该复选框,则减去。因此,如果选中第一个复选框,则会使总数> 0和所有复选框都未选中,您开始减去它们的值,直到它为零。

那个别的检查不属于那里。