11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Voilà mon instruction if se répète 95 fois, comment simplifier ou raccourcir.

EX :

if ((quantite.value<=12)&&(departement.value==01)) {
total.value=24.21;
}

if ((quantite.value<=12)&&(departement.value==02)) {
total.value=23.22;
}

if ((quantite.value<=12)&&(departement.value==03)) {
total.value=19.95;
}

if ((quantite.value<=12)&&(departement.value==04)) {
total.value=17.46;
}

Jusqu’à

if ((quantite.value<=12)&&(departement.value==95)) {
total.value=35.41;
}


La quantité ne varie pas (<=12) par contre il y à 95 départements et un total pour chaque département.

Dès que la quantité est (>12) il n’y a qu’une instruction if.

if (tota6.value>12) {
total.value=Math.round((tota7.value * tota6.value) * 100)/100 ;
}

Donc comment simplifier la première partie avec ses 95 instructions if ?

Merci

Cireultra
Salut,

tu peux tester une seule fois au départ si quantité value est inférieur à 12


if(quantie.value<=12){
... puis tests département
}
else{
... test supérieur à 12
}


Pour les tests des départements, le switch peut simplifier un peu le code :


switch (Variable) { ...ton département
	case Valeur1: ... département 01
	Liste d'instructions; ... valeur totale
	break; ... sortie de la condition
	case Valeur2: ... département 02
	Liste d'instructions; ... etc
	break;
	case ValeurX:
	Liste d'instructions;
	break;
	default: 
	Liste d'instructions;
	break;
}


en php switch est plus rapide que les if à répétition pour javascript je ne sais pas Smiley langue
Je suis pas trop pour un switch avec 95 valeurs ...
Une simple association des valeurs par un tableau prédéfinis me semble plus propre et plus simple Smiley smile


var valeurs = new Array(13.5, 12.4, 11.5 ...  );
total.value= valeurs[departement.value-1];
J'ai besoin d'une explication pour les tableaux.

Je ne comprend pas la ligne: total.value= valeurs[departement.value-1];

departement.value-1 -> ? ça correspond à quoi le -1

Merci pour ton aide.

A+

Cireultra

Un code comme ça devrait fonctionner :
if(quantite.value<=12){
	// quantité plus petite ou égale à 12
	
	// Tableau contenant les 95 valeurs correspondant aux 95 départements
	var valeurs = new Array(24.21, 23.22, 19.95, 17.46, ... , 35.41);
	// Récuperation du numéro de département
	var numeroDepartement = parseInt(departement.value);
	// la valeur est la correspondance au numéro du département dans le tableau
	total.value = valeurs[numeroDepartement-1];
}else{
	// quantité plus grande que 12
	if(tota6.value>12) {
		total.value=Math.round((tota7.value * tota6.value) * 100)/100 ;
	}
}


dans ton tableau tu dois mettre les 95 valeurs ... et comme ton premier élément du tableau est le numéro 0, il faut mettre un -1 afin que cela soit la bonne valeur.

Tu vois comment ça marche ?

A toi d'adapter a ce que tu veux, j'ai peut être pas mis ce que tu voulais faire exactement...