输出应为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>
&#13;
答案 0 :(得分:2)
问题是因为您使用的是按位OR运算符,而不是逻辑 OR运算符。
请注意,您可以使用+=
增加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 :(得分: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>