Javascript 处理数值时出现奇怪的JS问题
其思想是每次选中复选框时刷新总值 我的HTML看起来是这样的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
<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
子句应该在那里吗?如果当前未选中该复选框,我同意您不想将其添加到总数中,但为什么要从中减去?那么您的解决方案是什么?