11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,


j'ai besoin, pour un projet, de me mettre un peu au Javascript. J'ai rarement touché plus de 5 minutes à un script et me voilà à devoir en faire un moi-même. Je rencontre cependant un problème. Mais tout d'abord je vous explique ce que je veux faire :

Le visiteur arrive sur la page d'index. Il y a un bout de texte, suivi d'un lien. Le lien déclenche une fonction JS (Dialogue1) lui demandant via un prompt son identifiant. Tant qu'il n'a pas inséré son identifiant, le prompt revient.

Pour arriver à cela, j'ai juste demandé dans le code d'invoquer à nouveau la fonction Dialogue1, dans le cas où la variable contenant l'identifiant est vide :

function Dialogue1() {
	var id = prompt('Bonjour, citoyen.\nVeuillez décliner votre ID.');
	
	if (id) {
		var raisonvenue = prompt("Veuillez expliquer les raisons de votre venue :\n\n     1. Je suis un félon qui cherche à conquérir un secteur ;\n     2. Je suis intéressé par ce secteur ;\n     3. Je souhaite faire un léger passage histoire de voir ce qu'il se passe à l'Asile ;\n     4. Je suis un félon qui cherche à mettre en péril le bonheur du secteur.\n", "Indiquez dans ce champ le numéro de la réponse que vous souhaitez donner");
	}
	else {
		Dialogue1();
	}


(je sais néanmoins que je devrai modifier ce bout de code afin de m'assurer que l'identifiant du visiteur est correct, je verrai ça sous peu.)

Maintenant, en fonction de son choix dans le prompt "raisonvenue" (la raison de sa venue, donc), il doit se passer quelque chose :

		if ((raisonvenue == 1) || (raisonvenue == 4)) {
			alert("L'Ordinateur a bien pris en compte votre demande de remplacement.\nVotre nouveau clone sera prêt dans peu de temps.\n\nSouriez, citoyen. [lol]");
		} else if ((raisonvenue == 2) || (raisonvenue == 3)) {
			document.location.href = "index.php?page=raisonok";
		} else //si "raisonvenue" ne vaut pas un nombre entre 1 et 4
			//retour au prompt de "raisonvenue"
		}


Et c'est très exactement ici que je me noie : comment dire au script que si la variable "raisonvenue" vaut autre chose que 1, 2, 3 ou 4, il doit ré-afficher le prompt de raisonvenue ?

J'espérais pouvoir trouver ça tout seul, mais difficile de savoir quoi googler. J'imagine qu'il s'agirait d'une boucle ? Mais comment la mettre en place ? Smiley ohwell


Merci bien pour votre aide. Smiley smile (et euh...ne faites pas attention au contenu des prompts, s'il vous plait... Smiley lol )
Modifié par SolykZ (23 May 2008 - 23:32)
Coucou, moi je partirais sur quelque chose comme ça:



var raisonvenue = 0;
while(raisonvenue < 1 || raisonvenue > 4) {
var raisonvenue = prompt("Veuillez ...")

if ((raisonvenue == 1) || (raisonvenue == 4)) {
    alert("L'Ordinateur a bien pris en compte votre demande de remplacement.\nVotre nouveau clone sera prêt dans peu de temps.\n\nSouriez, citoyen.   ");
} else if ((raisonvenue == 2) || (raisonvenue == 3)) {
	document.location.href = "index.php?page=raisonok";
} else //si "raisonvenue" ne vaut pas un nombre entre 1 et 4
	//retour au prompt de "raisonvenue"
}

}


ce n'est surement pas totalement exact, je ne fais plus du javascript tout les jours et je te réponds vite avant de partir manger mais je pense que le principe est bon.
Modifié par AurelienB (09 May 2008 - 20:41)
bonjour,

en général lorque qu'il y a trop d'imbrigation de if/else et lorsque c'est possible (cela me semble le cas ici) j'utilise un switch(choix)
du genre :

function traiter(choix) {
  switch(choix){

  case 1 : faireCeci();
               break;
  case 2 : fairecela();
               break;
  ...etc

 default  pardefault();
 }//fin switch
} //fin traterchoix


++
Modifié par kzone (09 May 2008 - 23:19)
Bonsoir. Smiley smile

Désolé du retard, quelques petits problèmes de PC...

Voici donc mon code, à présent il fonctionne et fait ce que je voulais qu'il fasse :

function Dialogue1() {
	id = prompt("Bonjour, citoyen.\nVeuillez décliner votre ID.", "Votre ID ici");
	
	do {
		if ((id) && (isFinite(id))) {
			var raisonvenue = prompt("Veuillez expliquer les raisons de votre venue :\n\n     1. Je suis un félon qui cherche à conquérir un secteur ;\n     2. Je suis intéressé par ce secteur ;\n     3. Je souhaite faire un léger passage histoire de voir ce qu'il se passe à l'Asile ;\n     4. Je suis un félon qui cherche à mettre en péril le bonheur du secteur.\n", "Indiquez dans ce champ le numéro de la réponse que vous souhaitez donner");
		} else {
			Dialogue1();
			break;
		}
	} while ((raisonvenue < 1) || (raisonvenue > 4) || (!isFinite(raisonvenue)));
		
	if ((raisonvenue == 1) || (raisonvenue == 4)) {
		alert("L'Ordinateur a bien pris en compte votre demande de remplacement.\nVotre nouveau clone sera prêt dans peu de temps.\n\nSouriez, citoyen. [lol]");
	} else if ((raisonvenue == 2) || (raisonvenue == 3)) {
		document.location.href = "index.php?page=raisonok&id=" + id;
	}
	return id;
}



Merci pour votre aide. Smiley smile Smiley smile