2009-07-31 10 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); 

gibi ve değerlerini özetlemek istiyorum. Bu kötü bir dize üretir. Neyi kaçırıyorum?? İlk metin kutusuna 8 tane koyarsam, toplam metin "08.000.000.000.00" olarak biter. Neyi yanlış yapıyorum? Para birimi olarak biçimlendirmek istiyorum, ancak değilse, en az iki ondalık sayı. Herhangi bir işaretçi?Javascript: Neden bu üretir ve çirkin bir dizgi ??? Ben bazı metin kutuları aracılığıyla döngü çalışıyorum birimi ise

sayesinde San Diego

+0

her zaman ileride operasyonlar için olduğu gibi kaynakları tutarak şamandıra ya da ints olarak matematik ne yapmam eğilimindedir edilir. Daha sonra son kullanıcı için sonuçların görüntülenmesinde kullanılan, ancak herhangi bir matematik işleminde olmayan bir prototip kodlu .money (currencySign) var. –

+0

String.prototype.toMoney = fonksiyonu() { dönüş "$" + Bu; } var miktarı = total.toFixed (2) .toMoney(); $ ("toplam".) Metin (miktar).; Sweet !!! Mükemmel çalışıyor! ile eklerken beni kurtardı ++ – Hcabnettek

cevap

13

.toFixed içinde ~ ck bir String bir Number nesneyi dönüştürür.

yerde tam değerleri bırakın ve sadece çok Alternatif

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

sona yeniden bir sayıya dize dönüştürmek de .toFixed kullanarak dönüştürün. jQuery Calculation

da dolaylı olarak sorununuzu çözebilir eklenti kullanarak:

total = total + + tmp; 
+0

, ben uygulayarak edildi '.toFixed (2)' yüzer ama o dizeye dönüştürülür ve bir '+' I + 5 = 55 yerine 5 + 5 = 10 5 var. :) Teşekkür ederim. – rmagnum2002

1

Bilginize, jQuery için mükemmel bir matematiksel toplama eklentisi var. o zaman toplam ekleyerek, bir dizeye parseFloat dönüştürüyoruz.END_STRONG

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

:

It adlı kullanım için Senaryonu azaltacaktır. Her şey eklendikten sonra son satırına sadece .toFixed (2) ekleyin.

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); 
İlgili konular