Javascript:なぜこれがandい文字列を生成するのですか?通貨が欲しい
-
06-07-2019 - |
質問
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);
所属していません StackOverflow