Boucle while() JS

Résolu/Fermé
ploploplop - 21 déc. 2011 à 16:48
 ploploplop - 21 déc. 2011 à 17:27
Bonjour,

j'imbrique plusieurs boucle if dans une seule boucle while().
Voila à quoi ça ressemble :

While {

if() {

}

if() {

}
}

Le soucis c'est que si le 1er if() est correcte, le while boucle sans fin sur le 1er if() sans passer aux autres. comment je peux faire pour passer dans le 2eme if() MEME si le 1er est bon?

J'ai essayé pas mal de combinaison sans sucées. j'aurais bien besoin d'un autre regard.
Merci d'avance.

4 réponses

Bonjour

D'abord, if est une instruction de test, pas une boucle.
Ensuite, le code que tu donnes est incomplet (j'espère). Mais à en juger par sa structure, les deux if son exécutés que le premier soit vrai ou pas.
Peux-tu donner le code complet du script ?
0
je te remercie. Voila un bout du script (légèrement modifié)

while (row[j] == "oui")
{
Browser.msgBox("row[j] = oui");



var region = row2[p].slice(2,7);;

Browser.msgBox(region);


if (region =="Paris")
{
Browser.msgBox("envoi PARIS");

var contact1 = sheet2.getRange(2,2).getValue();
var contact2 = sheet2.getRange(2,3).getValue();
var contacts1 = contact1 +","+ contact2;
MailApp.sendEmail(contacts1,objet,infos);

}

if (region=="Marseille")
{
Browser.msgBox("envoi Marseille");

var contact3 = sheet2.getRange(3,2).getValue();
var contact4 = sheet2.getRange(3,3).getValue();
var contacts2 = contact3 +","+ contact4;
MailApp.sendEmail(contacts2,objet,infos);

}
}
J'espère que ce bout te suffit pour voir à peu prêt la situation?

Comme tu le constate j'ai mis des flags, qui m'ont permis de voir que ça bouclait sans fin sur la première instruction.
0
Dans ton script, je ne vois pas ce qui modifie row[j] ni row2[p]
Donc s'il y a "oui" dans row[j] et "Paris" au bon endroit dans row2[p] donc dans région, il n'y a aucune raison pour sortir de ta boucle ni pour que region devienne subitement Marseille.

Il ne devrait pas y avoir un p++ et / ou un j++ quelque part dans ta boucle pour passer à la suite ?
0
En effet. cette boucle while est imbriquer dans deux boucles for(). qui elles incrémentent j et p.

Mais je viens de tester en incrémentant le p et le j dans chaque instruction if() est ça fonctionne. j'avais pas vu venir cette solution.
Je te remercie encore une fois.
0