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); I am trying to loop through some text boxes and sum up their values. This produces a nasty string. What am I missing?? if I put 8 in the first textbox total text ends up as " 08.000.000.000.00". What am I doing wrong? I would like to format as currency but if not, at least just a two decimal number. Any pointers?
3 Réponses :
.tofixed convertit l'objet d'un numéro à une chaîne.
laissez les valeurs complètes en place et convertissez uniquement en utilisant .tofixed à l'extrémité p> alternativement , reconsverrez la chaîne en un numéro. p>
++ m'a sauvé, j'appliquais .tofixed (2) code> pour flotter mais qui le convertit en chaîne et lors de l'ajout avec un
+ code> j'ai 5 + 5 = 55 au lieu de 5 + 5 = 10. :) Merci.
Just Fyi, il existe un excellent plugin d'agrégation mathématique pour JQuery: JQuery Calculement
Utilisation de ce plug-in peut également résoudre indirectement votre problème. P>
IT EU L'utilisation réduirait votre script à: p>
$('.total').text($('.amount').sum());
Vous convertissez le parsefloat en une chaîne, puis l'ajoutez au total. Ajoutez uniquement .tofixed (2) à la dernière ligne, une fois que des choses ont été ajoutées.
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);
Ce que j'ai tendance à faire, c'est toujours faire des mathématiques comme des flotteurs ou des INT, en gardant les sources comme elles sont pour toutes les opérations futures. J'ai ensuite un prototype codé. Money (Currencysign) qui est utilisé uniquement pour l'affichage des résultats à l'utilisateur final, mais pas dans aucune opération de mathématique - génère une chaîne.
String.pototype.tomoney = fonction () {retour "$" + ceci; } var montant = TOTAL.TOFIXED (2) .Tomoney (); $ (". Total"). Texte (montant); Doux!!! Fonctionne parfaitement!