jQuery小数未显示在复选框的结果总和中

时间:2016-06-14 13:30:41

标签: javascript jquery html

下面的代码选中复选框的总和并显示结果。

我在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

5 个答案:

答案 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"));