下面的代码选中复选框的总和并显示结果。
我在stackoverflow中从this问题得到了这段代码。
HTML
<input type="checkbox" checked value="Gez" rel="69.95">Gezichtsbehandeling
<input type="checkbox" value="ExtraLang" rel="9.95">Extra lange
<input type="checkbox" value="Massage" rel="59.95">Massage
<input type="checkbox" value="Pedicure" rel="35">Pedicure
Totaal <span id="output"></span>
JS
<script>
$(document).ready(function() {
function recalculate() {
var sum = 0;
$("input[type=checkbox]:checked").each(function() {
sum += parseInt($(this).attr("rel"));
;
});
$("#output").html(sum);
}
$("input[type=checkbox]").change(function() {
recalculate();
});
});
</script>
问题是总和不显示小数。
请参阅此处jsfidle
答案 0 :(得分:3)
根据你的JSFiddle:
$("input[type=checkbox]:checked").each(function() {
sum += parseFloat($(this).attr("rel"));
});
将parseInt
更改为parseFloat
以保留小数点。
工作JSFiddle
<强>更新强>
根据您的要求将输出格式化为2位小数..您需要更改
$("#output").html(sum);
要:
$("#output").html(sum.toFixed(2));
这应该会给你你想要的格式。
工作JSFiddle
答案 1 :(得分:2)
显然这种情况正在发生,因为parseInt正在剥离小数部分。将其转换为任意数字,而不是特别为int。
sum += +$(this).attr("rel");
答案 2 :(得分:2)
试试这个:
$("input[type=checkbox]:checked").each(function() {
sum += parseFloat($(this).attr("rel"));
});
将parseInt替换为parseFloat。这是jsFiddle:http://jsfiddle.net/efvxefx1/2/
感谢。
答案 3 :(得分:2)
在小数点后得到两位数!
$("input[type=checkbox]:checked").each(function() {
sum += parseFloat($(this).attr("rel"));
});
sum = sum.toFixed(2)
$("#output").html(sum);
答案 4 :(得分:0)
这是因为你在做总和之前将它转换为Int。请将您的代码更新为以下 -
sum += parseFloat($(this).attr("rel"));