[JavaScript] Boucle for, nom de var + i

Résolu/Fermé
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 - 7 nov. 2006 à 14:00
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 - 8 nov. 2006 à 10:22
Bonjour,

J'ai un peu soucis en JS ...

En fait j'ai une fonction validerModif que j'appelle suite au SUBMIT d'un form PHP ... L'appel de cette fonction marche ... Je l'appelle avec pas mal de param et je voudrais "automatiser" leur traitement parce qu'ils portent tous un nom similaire :
chargeHH1, chargeHH2, ..., chargeHH6
chargeMM1, chargeMM2, ..., chargeMM6

J'avais pensé à ça :
function validerModif(dateDeb, dateFin, dateEch, chargeHH0, chargeMM0, chargeHH1, chargeMM1, chargeHH2, chargeMM2, chargeHH3, chargeMM3, chargeHH4, chargeMM4, chargeHH5, chargeMM5, chargeHH6, chargeMM6){
	var tableauCharges = new Array();
	for(var i=0; i<7; i++){
		var chargeHH = parseInt(((chargeHH+i).value)*60) ;
		var chargeMM = parseInt((chargeMM+i).value) ;
		var chargesSaisies = chargeHH+chargeMM ;
		tableauCharges.push(chargesSaisies);
		messageErreur = messageErreur+"\n"+tableauCharges[i];
	}
	alert(messageErreur)
	
	return false ;
}

Mais vous vous doutez bien que si je suis là c'est que ça ne marche pas !!
L'affichage de l'alert me donne des NaN !! Tandis que si je mets par exemple :
var chargeHH = parseInt(((chargeHH+i).value)*60) ;
		var chargeMM = parseInt((chargeMM+i).value) ;
à la place de
var chargeHH = parseInt(((chargeHH1).value)*60) ;
		var chargeMM = parseInt((chargeMM1).value) ;
ça m'affiche des valeurs numériques !!

Je pense que je fais mal (très mal / affreusement mal / ... à vous de juger !!) la concaténation des noms de variables avec le i, et d'ailleurs, je ne sais pas si j'ai le droit de faire ça !

Je vous remercie d'avance pour vos réponses et espère avoir été claire dans mon explication ...

2 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
7 nov. 2006 à 18:05
Ce que tu fais est faisable en PHP lorsque tu récupère tes données via POST, GET, et c'est d'ailleurs ce que tu as déjà fais, d'ou l'adaptation en JS ici j'imagine ;)

Mais je crois pas que tu puisse faire de même en JS, enfin, je n'ai jamais essayé. De sur tu t'y prend mal, c'est normal qu'il te dise que ce n'est pas défini (NaN) car ce que tu fais revient à lui demander ca :

var chargeHH = parseInt(((10+i).value)*60) ;


si chargeHH vaut 10, mais vu qu'il n'est pas défini il te met l'erreur.
Dans ton cas, 'chargeHH' est interprété comme un variable
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
7 nov. 2006 à 18:12
Mais tu peux faire autrement puisque tu es en JS :

Avant de faire appel a ta fonction, passe des HH dans un tableau, de meme pour tes MM, et tu passe ces deux tableaux à ta fonction. Ou alors tu met tout ca dans des tableaux directement dans la fonction comme dans l'exemple ci-dessous :

Ainsi tu aura un truc du style :

function validerModif(dateDeb, dateFin, dateEch, chargeHH0, chargeMM0, chargeHH1, chargeMM1, chargeHH2, chargeMM2, chargeHH3, chargeMM3, chargeHH4, chargeMM4, chargeHH5, chargeMM5, chargeHH6, chargeMM6){

  var tabChargeHH = new Array();
  tabChargeHH.push(chargeHH1);
  tabChargeHH.push(chargeHH2);
  ...
  var tabChargeMM = new Array();
  // --- Idem que pour tabChargeHH

	var tableauCharges = new Array();
	for(var i=0; i<tabChargeHH.length; i++){
		var chargeHH = parseInt((tabChargeHH[i].value)*60) ;
		var chargeMM = parseInt(tabChargeMM.value) ;
		var chargesSaisies = chargeHH+chargeMM ;
		tableauCharges.push(chargesSaisies);
		messageErreur = messageErreur+"\n"+tableauCharges[i];
	}
	alert(messageErreur)
	
	return false ;
}


Et voilà, je pense que ton probleme est contourné ?
0
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 14
8 nov. 2006 à 10:22
Merci pour cette solution qui contourne effectivement mon problème ...

Ce que je voulais éviter c'était la construction du tableau sans boucle for ! Je vais m'en contenter ...

Il faut que j'arrête de me prendre la tête pour gagner 4 lignes de code !

En conclusion, je dis merci !!
0