Page 1 sur 1

plusieurs calcul en fonction d'un montant

Posté : 03 juil. 2019, 10:45
par anti91
bonjour à tous,

j'ai un petit souçis, j'ai créé une fonction pour faire un calcul de frais d'agence en fonction du montant, le problème que je rencontre, c'est que dans ce calcul j'ai des addition et des mulitiplication, et je ne sais comment faire pour que cela fonctionne.

avec se code, il multiplie le taux_com par le prix, alors que pour le prix inférieur à 100000 je voudrais qu'il additionne le taux_com.....

voila le code que j'ai fais au départ

merci pour votre aide sachant que je suis débutant

Code : Tout sélectionner

<script>
 function Calcul {
 console.log("toto");
 Prix = document.getElementById('prix').value;
 if(Prix >= 1 && Prix <= 99999){
 Taux_com = ('6000');
 }
 if(Prix >= 100000 && Prix <= 200000){
 Taux_com = ('1.06');
 }
 if(Prix >= 200001 && Prix <= 400000){
 Taux_com = ('1.05');
 }
 if(Prix > 400001 ){
 Taux_com = ('1.04');
 }
 var Prixtot = Prix*Taux_com;
 var Com = Prixtot-Prix;
 document.getElementById('prix_fai').value= Prixtot.toFixed;
 document.getElementById('commission').value= Com.toFixed;

 }
 </script>
et ce que j'ai essayé de modifier mais sans succès

Code : Tout sélectionner

<script>
 function Calcul {
 console.log("toto");
 Prix = document.getElementById('prix').value;
 if(Prix >= 1 && Prix <= 99999){
 Taux_com = ('6000');
 }
 if(Prix >= 100000 && Prix <= 200000){
 Taux_com = ('1.06');
 }
 if(Prix >= 200001 && Prix <= 400000){
 Taux_com = ('1.05');
 }
 if(Prix > 400001 ){
 Taux_com = ('1.04');
 }
 if(Prix < 350001 ){
 Taux_com = ('1.04');
 }
 if(Prix <= 99999){
 var Prixtot = Prix+Taux_com;
 }
 else
 {
 var Prixtot = Prix*Taux_com;
 }
 var Prixtot = Prix*Taux_com;
 var Com = Prixtot-Prix;
 document.getElementById('prix_fai').value= Prixtot.toFixed;
 document.getElementById('commission').value= Com.toFixed;

 }
 </script>
Le vrai piège ici c'est que tes Taux_com sont écrits entre guillemets, donc ce sont des chaînes : du coup Prix+Taux_com te colle les deux valeurs bout à bout au lieu d'additionner, alors que le * force la conversion en nombre. Enlève les quotes autour des taux et fais un Number(Prix) en récupérant la valeur, et supprime le var Prixtot en double tout en bas qui écrase ton if/else. Après, si c'est le site d'une agence que tu montes, garde en tête que le plus dur vient une fois le code fini : pour remonter sur Google le renfort d'une agence de référencement fait gagner un temps fou quand on débute côté acquisition.

Re: plusieurs calcul en fonction d'un montant

Posté : 03 juil. 2019, 11:12
par webmaster
Bonjour,

Voici une solution :
https://www.toutjavascript.com/user/fai.html

Pour les calculs, il faut bien convertir en nombre avec parseFloat
J'ai ajouté un if / else pour distinguer la commission fixe en dessous de 100k et le taux au dela

Le source :

Code : Tout sélectionner

<script>
    function Calcul() {
	    console.log("toto");
		Prix = parseFloat(document.getElementById('prix').value);
		
		if(Prix >= 1 && Prix < 100000) {
			/* Commission fixe */
			var Com = 6000;		    	
			var Prixtot = Prix + Com;
    	} else {
	    	/* Commission proportionnelle */
			if(Prix >= 100000 && Prix <= 200000){
				Taux_com = 1.06;
	    	}
			if(Prix >= 200001 && Prix <= 400000){
				Taux_com = 1.05
	    	}
			if(Prix > 400001 ){
				Taux_com = 1.04;
	    	}
			var Prixtot = Prix*Taux_com;
			var Com = Prixtot-Prix;		    	
    	}
		document.getElementById('prix_fai').value= Math.round(Prixtot);
		document.getElementById('commission').value= Math.round(Com);
    }
</script>
<form>
	Prix : <input type="text" id="prix" value="1000">
	<input type="button" value="Calculer" onclick="Calcul()">
	<hr>
	Prix FAI : <input type="text" id="prix_fai" value=""><br>
	
	Commission : <input type="text" id="commission" value="">
</form>

Re: plusieurs calcul en fonction d'un montant

Posté : 03 juil. 2019, 12:38
par anti91
Bonjour

et merci pour cette éléments de réponse qui me permet d'y voir un peu plus clair ....

cela fonctionne parfaitement .

je vais faire d'autres test pour mieux comprendre tous ça ....

mais c'est très clair .

merci encore pour ton aide