2009-07-31 78 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」。我究竟做錯了什麼?我想格式化爲貨幣,但如果不是,至少只有兩位十進制數。任何指針?Javascript:爲什麼這會產生醜陋的字符串?我想要貨幣

感謝,在聖地亞哥

+0

我傾向於做的事情總是做數學作爲浮動或整數,保持來源,因爲他們是爲未來的任何操作。然後我有一個原型代碼。貨幣(currencySign),純粹用於顯示結果給最終用戶,但不在任何數學操作中 - 輸出一個字符串。 – 2009-07-31 19:01:34

+0

String.prototype.toMoney = function(){ return「$」+ this; } var amount = total.toFixed(2).toMoney(); $(「。total」)。text(amount); 甜!完美的作品! – Hcabnettek 2009-07-31 19:09:29

回答

13

.toFixed 〜CK的對象從數轉換爲字符串。

保留完整值的地方,只能用.toFixed在最後

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

或者,將字符串轉換回數字轉換。

total = total + + tmp; 
1

僅供參考,有jQuery的一個很好的數學聚合插件:jQuery Calculation

使用該插件還可以間接地解決您的問題。

它的使用將你的腳本減少:

$('.total').text($('.amount').sum()); 
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);