0

私がやろうとしているのは、チェックされたすべての入力の価格を取り、それを合計することです。

これが私のコードです

    function totalSum(e) {
    e.preventDefault();
    var unit = $("input:checked").parent("dt").siblings("dd").find("span"); 
    total = 0;
    $.each(unit, function(index, obj){
        total += parseInt($(obj).text(), 10);
    });
    $("#totalPrice").html('<span class="count">€ ' + total + '</span> €');
}

すべてのユニットはそのスパン内にあります。合計は 0 に設定されています。チェックされた各オブジェクトで parseInt を呼び出してから、合計をスパン内に追加します。HTML では、価格は次のように記述されます。

    <dd><span class="costo">€199</span></dd>

ご覧のとおり、ユーロマークがあります。残念ながら解析できませんでしたが、これですか?何も変わらないから!どのように書けばよいですか?前もって感謝します

わかりました、とても恥ずかしいですが、うまくいきません。コードを最小限に抑えることにしたので、そのようにしてみました

    <body>
    <div class="bla"><span class="count">1</span></div>
    <div class="bla"><span class="count">1</span></div>
    <div class="bla"><span class="count">1</span></div>

    <div id="total"></div>
    <script type="text/javascript" src="js/jquery-1.9.0.min.js" /></script> 
    <script>
    $(document).ready(function(){


    function sum() {
        var prices = $("div.bla").find(".count");
        total= 0;
        $.each(prices, function(index, obj){
    total += parseFloat($(obj).text());
});

$("#total").html('<span class="count">'+total +'</span> €');
    };

});

これは機能するはずですが、何も表示されません。誰かが私に何が悪いのか教えてくれますか?!

4

4 に答える 4

1

数字以外の文字はすべて置き換えることができます。

total += parseInt($(obj).text().replace(/[^\d.-]/, ''), 10);

また、unit.each()の代わりに行うこともできますが$.each(unit、それはあなたがやろうとしていることに影響を与えません。

于 2013-02-05T18:45:59.347 に答える
1

テキストからユニットを削除するだけです:

var text = $(obj).text().replace(/[€\$]/,''); // add other units if needed
total += parseInt(text, 10); // are you sure you don't prefer parseFloat ?

+または、数字とおよびのみを保持したい場合は、次のよう-にします

var text = $(obj).text().replace(/[^\d\-\+]/g, '');
于 2013-02-05T18:44:47.510 に答える
0

それを行うための最良の方法を試して読んだ数日後、これは私が達成しようとしていたことのエレガントな解決策になると信じています:)

$("input").on("click", function() {
    var j = $("input:checked");
    t = 0;
    $(j).each(function() {

        t += parseInt(this.value, 10);
    });
    $("#total").html("<span>€ " + t + "</span>");
    });
于 2013-02-07T01:19:59.637 に答える
0

parseInt を変更して、最初の文字をスキップします。

total += parseInt($(obj).text().substring(1),10);
于 2013-02-05T18:45:48.643 に答える