Javascript:なぜこれがandい文字列を生成するのですか?通貨が欲しい

StackOverflow https://stackoverflow.com/questions/1214201

質問

 var total = 0;
        $(".amount").each(function() {
            var value = $(this).val();
            value = (value.length < 1) ? 0 : value;
            var tmp = parseFloat(value).toFixed(2);
            total += tmp;
        });
        $(".total").text(total);

いくつかのテキストボックスをループして、それらの値を合計しようとしています。これは厄介な文字列を生成します。私は何が欠けていますか?最初のテキストボックスに8を入力すると、合計テキストは&quot;になります。 08.000.000.000.00&quot;。何が間違っていますか?通貨としてフォーマットしたいのですが、そうでない場合は、少なくとも2桁の10進数です。ポインターはありますか?

ありがとう、 〜ck in San Diego

役に立ちましたか?

解決

.toFixedは、オブジェクトをNumberからStringに変換します。

すべての値をそのままにして、最後に.toFixedのみを使用して変換します

$(".total").text(total.toFixed(2));

あるいは、文字列を数値に変換します。

total = total + + tmp;

他のヒント

参考までに、jQueryには優れた数学的集約プラグインがあります: jQueryの計算

このプラグインを使用すると、間接的に問題が解決する場合があります。

使用すると、スクリプトは次のようになります:

$('.total').text($('.amount').sum());

parseFloatを文字列に変換してから、totalに追加しています。 .toFixed(2)を最後の行に追加するのは、一度追加した後だけにしてください。

var total = 0;
$(".amount").each(function() {
    var value = $(this).val();
    value = (value.length < 1) ? 0 : value;
    var tmp = parseFloat(value);
    total += tmp;
});
$(".total").text(total).toFixed(2);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top