[JavaScript] Boucle for, nom de var + i
Résolu
elsadelatoundra
Messages postés
126
Statut
Membre
-
elsadelatoundra Messages postés 126 Statut Membre -
elsadelatoundra Messages postés 126 Statut Membre -
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 :
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 :
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 ...
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 ...
A voir également:
- [JavaScript] Boucle for, nom de var + i
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Nom de l'adresse - Forum Jeux vidéo
- I deux point - Forum Windows
- I love pdf avis ✓ - Forum PDF
- Ça veut dire quoi intitulé d’une adresse ?? ✓ - Forum Loisirs / Divertissements
2 réponses
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 :
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
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
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 :
Et voilà, je pense que ton probleme est contourné ?
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é ?