【问题标题】:jQuery decimals not shown in result sum of checked boxesjQuery小数未显示在复选框的结果总和中
【发布时间】:2016-06-14 22:06:15
【问题描述】:

下面的代码对选中的框求和并显示结果。

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

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    根据您的 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

    【讨论】:

    • 啊,你早了 15 秒。 +1 给你 :)
    • @Sk.Tajbir 哈哈,谢谢。伟大的思想都一样:)
    • 很有趣,它比mine 方法更好吗? /cc @理查德
    • @Richard 我已经更新了我的答案,为您提供了 2 位小数的格式
    【解决方案2】:

    很明显,这是因为 parseInt 正在剥离小数部分。将其转换为任意数字,而不是具体的 int。

    sum += +$(this).attr("rel");
    

    【讨论】:

    • 当你开始时,你的方法会更好,更简单。然而,在我的代码中,它只是将 parseInt 更改为 parseFloat。我希望这能回答您的评论。
    【解决方案3】:

    试试这个:

    $("input[type=checkbox]:checked").each(function() {
        sum += parseFloat($(this).attr("rel"));
    });
    

    将 parseInt 替换为 parseFloat。这里是 jsFiddle:http://jsfiddle.net/efvxefx1/2/

    谢谢。

    【讨论】:

    • 感谢这工作也很好,可惜你慢了一点,谢谢你的努力。 +1
    【解决方案4】:

    求小数点后两位数的总和!

    $("input[type=checkbox]:checked").each(function() {
                sum += parseFloat($(this).attr("rel"));
            });
         sum = sum.toFixed(2)
       $("#output").html(sum);
    

    【讨论】:

    • 谢谢,固定小数是我需要知道的其他内容。它工作完美
    • 赞成将sum 格式化为小数点后两位:)
    【解决方案5】:

    这是因为您在求和之前将其转换为 Int。请将您的代码更新为以下 1-

    sum += parseFloat($(this).attr("rel"));
    

    【讨论】:

      猜你喜欢
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多