2017-10-08 85 views
2

输出应该543.54但我正在逐渐542.00。请帮我解决我做了什么错了。谢谢你在前进。。每个(函数()不工作浮点值

function getTotal() { 
 
    var gtotal = 0.00; 
 
    $(".sub_total").each(function() { 
 
    subtotal = $(this).html() | 0; 
 
    gtotal = parseFloat(gtotal) + parseFloat(subtotal); 
 
    }); 
 
    var gtotal = gtotal.toFixed(2); 
 
    $(".grand_total").html(gtotal); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="sub_total">267.33</div> 
 
<div class="sub_total"></div> 
 
<div class="sub_total">252.55</div> 
 
<div class="sub_total">23.66</div> 
 
<div class="grand_total"></div> 
 
<a href="javascript:void(0);" onclick="getTotal()">Sum</a>

+4

'$(本)。html的()| 0;'=>'+ $(this).html()|| 0;' –

+0

在每次循环迭代中尝试'console.log''小计'的值。另外,你不需要'parseFloat(gtotal)';它已经是一个浮动。 – Cully

回答

2

的问题是因为您使用的是位或运算符,而不是一个逻辑或运算。

请注意,您可以整理一下逻辑使用+=递增gtotal,在一个参加最后两行,并用不显眼的事件处理程序,而不是丑陋on*事件属性:

$(function() { 
 
    $('#sum').click(function(e) { 
 
    e.preventDefault(); 
 
    var gtotal = 0.00; 
 

 
    $(".sub_total").each(function() { 
 
     subtotal = $(this).html() || 0; // note || here 
 
     gtotal += parseFloat(subtotal); 
 
    }); 
 

 
    $(".grand_total").html(gtotal.toFixed(2)); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="sub_total">267.33</div> 
 
<div class="sub_total"></div> 
 
<div class="sub_total">252.55</div> 
 
<div class="sub_total">23.66</div> 
 
<div class="grand_total"></div> 
 
<a href="#" id="sum">Sum</a>

1

你把一个bitwise OR |代替logical OR ||的为默认值。

将按位OR转换为32位整数值,并对这些值执行OR操作。

function getTotal() { 
 
    var gtotal = 0;     // 0 
 
    $(".sub_total").each(function() { 
 
    subtotal = +$(this).html() || 0; // default value 
 
    gtotal = gtotal + subtotal;  // no need to convert numbers again to numbers 
 
    }); 
 
    var gtotal = gtotal.toFixed(2); 
 
    $(".grand_total").html(gtotal); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="sub_total">267.33</div> 
 
<div class="sub_total"></div> 
 
<div class="sub_total">252.55</div> 
 
<div class="sub_total">23.66</div> 
 
<div class="grand_total"></div> 
 
<a href="javascript:void(0);" onclick="getTotal()">Sum</a>

+0

'+ $(this).html()|| 0;'或'Number($(this).html())|| 0;' –