Calcul en JS et conditions

Fermé
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 8 mars 2012 à 21:03
 le père - 8 mars 2012 à 22:54
Bonjour,
J'essaie de faire un formulaire à partir des tarifs de la poste pour calculer le prix d'un envoi en fonction du nombre de produit.
Autrement dit, partant d'un produit qui pèse 32gr, j'essaie de calculer le prix en fonction de la quantité et tout ça en JS pour que le prix soit affiché avant l'envoi du formulaire de commande.

Après quelques recherches, j'ai réussi à faire ceci:
JS
<script language="javascript">
function Somme()
	{
	A=document.addit.case1.value;
	B=document.addit.case2.value;
	
	Z=Number(A)*Number(B);
	if(Z>500)
		{
		P=4.20;
		document.addit.prix.value=Number(P);
		}
	else{
		if(Z>250)
			{
			P=3.25;
			document.addit.prix.value=Number(P);
			}
		else{
			if(Z>100)
				{
				P=2.40;
				document.addit.prix.value=Number(P);
				}
			else{
				if(Z>50)
					{
					P=1.45;
					document.addit.prix.value=Number(P);
					}
				else{
					if(Z>20)
						{
						P=1;
						document.addit.prix.value=Number(P);
						}
					}
				}
			}
		}
	}
</script>

HTML
<form name="addit">
<input type="hidden" name="case1" value="32" />
<table>
<tr>
	<td>Nbr.:</td>
	<td> <input type="text" name="case2" onKeyUp="Somme()" /></td>
</tr>
<tr>
	<td>Prix:</td>
	<td><input type="text" name="prix" value="0" style="border:none;text-align:right;" /> €</td>
</tr>
</table>
</form>

Je me dis qu'il y a sûrement moyen de faire mieux surtout si je veux ajouter un tarif pour un poids supérieur.
En PHP, j'aurai fait ça avec un tableau (array).

Pouvez-vous m'aider à faire mieux et plus simple en JS?
Merci par avance.


A voir également:

1 réponse

Bonjour

En PHP, j'aurai fait ça avec un tableau (array).
C'est pareil en javascript, à des détails de syntaxe près :
<script type="text/javascript">
function Somme()
	{
	A=document.addit.case1.value;
	B=document.addit.case2.value;
	
	Z=Number(A)*Number(B);

  limitepoids=new Array(500,250,100,50,20);
  tarif=new Array(4.2,3.25,2.4,1.45,1);

  P=0.54; // valeur par défaut pour moins de 20 gr

  for (k=0;k<limitepoids.length;k++) { 
    if (Z>limitepoids[k]) {P=tarif[k]; break; }
  }
  document.addit.prix.value=Number(P);
} 
</script>
0