输出应为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>

最佳答案

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

请注意,您可以通过以下方式整理逻辑:使用+=递增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>

关于javascript - .each(function()不适用于浮点值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46633674/

10-12 02:21