Javascript: perché questo produce e brutta stringa ??? Vorrei una valuta
-
06-07-2019 - |
Domanda
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);
Sto cercando di scorrere alcune caselle di testo e riassumere i loro valori. Questo produce una brutta stringa. Cosa mi sto perdendo ?? se inserisco 8 nella prima casella di testo, il testo totale finisce come " 08.000.000.000.00 " ;. Che cosa sto facendo di sbagliato? Vorrei formattare come valuta, ma in caso contrario, almeno solo un numero decimale. Qualche puntatore?
Grazie, ~ ck a San Diego
Soluzione
.toFixed converte l'oggetto da un numero in una stringa.
Lascia i valori completi in posizione e converti solo usando .toFixed alla fine
$(".total").text(total.toFixed(2));
In alternativa, riconvertire la stringa in un numero.
total = total + + tmp;
Altri suggerimenti
Solo per la FYI, esiste un eccellente plug-in di aggregazione matematica per jQuery: Calcolo jQuery
L'uso di quel plug-in può anche risolvere indirettamente il tuo problema.
Il suo utilizzo ridurrebbe il tuo script a:
$('.total').text($('.amount').sum());
Stai convertendo il parseFloat in una stringa, quindi lo aggiungi al totale. Aggiungi .toFixed (2) alla riga finale, una volta che le cose sono state aggiunte.
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);