6
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を入力すると、合計テキストは「08.000.000.000.00」になります。私は何が間違っているのですか?通貨としてフォーマットしたいのですが、そうでない場合は、少なくとも10進数の2つだけです。ポインタはありますか?

4

3 に答える 3

13

.toFixedは、オブジェクトを数値から文字列に変換します。

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

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

または、文字列を数値に変換し直します。

total = total + + tmp;
于 2009-07-31T18:56:50.197 に答える
1

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

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

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

$('.total').text($('.amount').sum());
于 2009-07-31T19:07:05.730 に答える
0

parseFloatを文字列に変換してから、合計に追加します。物事が追加されたら、最後の行に.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);
于 2009-07-31T19:13:17.683 に答える