2009-07-31 7 views
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」になります。私は間違って何をしていますか?私は通貨としてフォーマットしたいと思いますが、そうでなければ、少なくとも2桁の10進数にしてください。すべてのポインタ?サンディエゴのJavascript:これはなぜ生成して醜い文字列ですか?私は通貨をご希望です

おかげで、 〜CK

+0

私がする傾向があるのは、いつも数学を浮動小数点または整数として扱い、将来の操作のためにソースをそのまま維持することです。次に、エンドユーザーに結果を表示するために純粋に使用されますが、任意の数学演算には使用されない、文字列を出力するプロトタイプ.money(currencySign)があります。 –

+0

String.prototype.toMoney = function(){ return "$" + this; } var amount = total.toFixed(2).toMoney(); $( "。合計")。テキスト(金額); 甘い!完璧に動作します! – Hcabnettek

答えて

13

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

は、代わりに、完全な値のままにして唯一の非常に、また

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

を終了し、バックナンバーに文字列を変換で.toFixedを使用して変換します。

total = total + + tmp; 
+0

++私を救って、浮動小数点に '.toFixed(2)'を適用していましたが、それを文字列に変換して、 '+'を追加すると、5 + 5 = 10ではなく5 + 5 = 55となりました。 :) ありがとうございました。 – rmagnum2002

1

ちょうどFYI、jQueryのための優れた数学的な集約プラグインがあります:jQuery Calculation

そのプラグインを使用すると、間接的にあなたの問題を解決することがあります。それは合計して追加し、あなたが文字列にparseFloatはを変換している

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

これの使い方はにスクリプトを減少させるであろう。物が追加されると、.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); 
関連する問題