Comment effectuer des opérations arithmétiques dans JQuery?

var price = $('#addprice').val(); var pass = $('#pass').val(); var total = $('#totalprice').attr('value') var left = $('#leftquota').attr('value') var balance = $('#balance').attr('value') var tprice = total + price; // total price var bprice = balance + price; // balance price var unitprice = bprice / left; // unit price $('#totalprice').text(tprice); $('#balance').text(bprice); $('#unitprice').text(unitprice); 

JQuery ne traite que le total, la gauche, l’équilibre, le tprice, le bprice, le prix unitaire, etc. comme des chaînes, mais en réalité il y a des décimales plutôt que des chaînes. Lorsque je leur applique parseInt (), ils deviennent tous des entiers, ce qui n’est pas ce que je veux. Comment effectuer des opérations arithmétiques? Les opérandes sont des décimales.

J’utilise parseFloat (); mais c’est pareil. L’opération de var tprice = total + price; vient littéralement conjuguer deux décimales (chaînes).

 $('#add_price').click(function(){ var price=$('#addprice').val(); var pass=$('#pass').val(); var total=$('#totalprice').attr('value') var left=$('#leftquota').attr('value') var balance=$('#balance').attr('value') total=parseFloat(total); left=parseFloat(left); balance=parseFloat(balance); var tprice=total+price; var bprice=balance+price; var unitprice=bprice/left; $('#totalprice').text(tprice); $('#balance').text(bprice); $('#unitprice').text(unitprice); 

vous pouvez utiliser parseFloat pour ce cas. il retournera la valeur float

exemple d’utilisation:

 var tprice = parseFloat(total) + parseFloat(price); 

Avez-vous essayé parseFloat ()?

Documentation

Une autre option consiste à étendre jQuery pour pouvoir lire des nombres directement à partir d’éléments de formulaire.

 jQuery.fn.numVal = function() { return parseFloat(this.val()) || 0; } .... var price=$('#addprice').numVal(); var pass=$('#pass').numVal() 

utilisez parseFloat, parseInt, ou placez simplement une chaîne + before, si vous êtes sûr qu’elle contient un nombre:

 var text = "123.456"; var number = +text; // now 'number' is Number, and not Ssortingng 

De plus, quelque chose me dit que cela devrait fonctionner plus rapidement que parseInt ou parseFloat.

Une autre façon d’utiliser l’object Number:

 var text = "123.456"; var number = Number(text); 

Mais c’est le moyen le plus lent.

Plus d’infos: http://www.jibbering.com/faq/faq_notes/type_convert.html#tcNumber

Je cherchais moi aussi une solution, et j’ai vu beaucoup de questions ici qui ne fonctionnent pas (même celle-ci) au cas où quelqu’un se demanderait comme moi, voici ma solution de travail:

 $("#apport").keyup( function(){ var apport = parseFloat($("#apport").val()); var montant = parseFloat($("#montant-financer").val()); var moinmontant = parseFloat(montant) - parseFloat(apport); $("#montant-financer").val(moinmontant); } ); 

Tous les sélecteurs d’id sont entrés