Problème de type de variables javascript

Minoux -  
 eee -
Bonjour,

J'ai un problème avec la fonction javascript de mon cru que voici :

<script language="JavaScript">
function calcul() {
var i=0;
while(i<2) {
document.commande.total_5.value = 130 * document.commande.quantite_5.value;
document.commande.total_ht.value += document.commande.total_5.value;
document.commande.total_6.value = 10 * document.commande.quantite_6.value;
document.commande.total_ht.value += document.commande.total_6.value;
i++;
}
document.commande.total_ttc.value = (Math.round((1.196 * document.commande.total_ht.value)*100))/100;
}
</script>


Le problème est au niveau de l'addition : au lieu d'additionner la valeur obtenue avec la valeur du champ javascript fait une concaténation.

Merci d'avance de votre aide

Minoux

4 réponses

Marden Messages postés 1075 Statut Membre 210
 
Bonsoir,

Les zones du formulaire sont considérées comme étant de type "chaîne", auquel cas, le signe "+" est un opérateur de concaténation :
chaîne + nombre => chaîne
nombre + chaîne => chaîne
Dans ton cas, il faut passer par la fonction "parseInt()".
0
Minoux
 
Ok merci, je vais tester ça
0
Minoux
 
Alors j'ai testé avec parseInt() mais malheureusement j'ai toujours des résultats fantaisistes.

Voici le code mis à jour :

<script language="JavaScript">
function calcul() {
var i=0;
while(i<2) {
document.commande.total_5.value = 130 * document.commande.quantite_5.value;
document.commande.total_ht.value = parseInt(document.commande.total_ht.value,10) + parseInt(document.commande.total_5.value,10);
document.commande.total_6.value = 10 * document.commande.quantite_6.value;
document.commande.total_ht.value = parseInt(document.commande.total_ht.value,10) + parseInt(document.commande.total_6.value,10);
i++;
}
document.commande.total_ttc.value = (Math.round((1.196 * document.commande.total_ht.value)*100))/100;
}
</script>


Encore merci

Minoux
0
eee
 
J'ai le même problème.
Du moins sous firefox, il y a concanténation au lieu d'addition. Mais sous IE7, l'addition se fait sans problème et la fonction parseInt() fonctionne (et n'est donc plus utile dans ce cas....)
0