2017-10-08 83 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;' –