pb de fonction js

Invité
Invité n'ayant pas de compte PHPfrance

29 mars 2007, 11:19

Bonjour à tous,
J'ai créé un petite fonction js. Ce n'est pas ce qu'il y a de plus beau, et son objectif n'est pas très important, mais plutot le comportement.
Voici la fonction:
function Lien() {
	
	i = document.getElementById("Liste1").selectedIndex;
	if (i == 0) return;
	urli = document.getElementById("Liste1").options[i].value;

	j = document.getElementById("Liste2").selectedIndex;
	if (j == 0) return;
	urlj = document.getElementById("Liste2").options[j].value;

	k = document.getElementById("Liste3").selectedIndex;
	if (k == 0) return;
	urlk = document.getElementById("Liste3").options[k].value;

	l = document.getElementById("Liste4").selectedIndex;
	if (l == 0) return;
	urll = document.getElementById("Liste4").options[l].value;

	m = document.getElementById("Liste5").selectedIndex;
	if (m == 0) return;
	urlm = document.getElementById("Liste5").options[m].value;

	n = document.getElementById("Liste6").selectedIndex;
	if (n == 0) return;
	urln = document.getElementById("Liste6").options[n].value;

	o = document.getElementById("Liste7").selectedIndex;
	if (o == 0) return;
	urlo = document.getElementById("Liste7").options[o].value;

	p = document.getElementById("Liste8").selectedIndex;
	if (p == 0) return;
	urlp = document.getElementById("Liste8").options[p].value;

	q = document.getElementById("Liste9").selectedIndex;
	if (q == 0) return;
	urlq = document.getElementById("Liste9").options[q].value;

}

Mon pb: si je mets
var toto = "xxx";
alert(toto);
Au début de mon code, juste après function Lien() {, le alert fonctionne.
Si je mets le même bout de code à la fin, juste avant "}", le alert ne fonctionne pas.

Pourtant, firefox ne m'affiche aucune erreur. Je me demande donc pourquoi mon alert marche quand il est placé au début, mais pas à la fin de la fonction.

Merci pour vos réponses.

Invité
Invité n'ayant pas de compte PHPfrance

29 mars 2007, 11:36

j'ai enlevé une grosse partie des instructions pour voir si c'est mieux.
Ceci marche
function Lien() {

	i = document.getElementById("Liste1").selectedIndex;
	if (i == 0) return;
	urli = document.getElementById("Liste1").options[i].value;

	var toto = "xxx";
	alert(toto);

}
Mais ceci ne marche pas
function Lien() {

	i = document.getElementById("Liste1").selectedIndex;
	if (i == 0) return;
	urli = document.getElementById("Liste1").options[i].value;

	j = document.getElementById("Liste2").selectedIndex;
	if (j == 0) return;
	urlj = document.getElementById("Liste2").options[j].value;

	var toto = "xxx";
	alert(toto);

}
Il y a donc un pb après le 1er bloc d'instructions, mais je ne vois pas lequel...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 mars 2007, 11:37

Si jamais l'un de tes index (i, j, k, l ...) est à 0, c'est à dire sur le premier élément de ta liste déroulante, alors tu exécutes l'inscruction return :
if (i == 0) return; 
Javascript sort donc de la fonction (sans retourner de valeur puisqu'aucun paramètre n'est spécifié après return) et n'exécutera pas le code qui suit, et n'ira donc probablement pas jouer ton alert() qui se trouve à la fin de celle-ci :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

29 mars 2007, 14:23

Le pb a été résolu en enlevant les return, et en ajoutant var pour les déclarations de variables. Je te remercie pour le conseil.

J'ai un autre pb de php vers javascript.
J'ai une variable php comme suit:
$url ="index.php?option=com_content&task=view&id=45&Itemid=64";
Je souhaite passer cette variable à Javascript, comme ceci:
var toto = "<?php echo $url_asso; ?>";
alert(toto);
ça me renvoie:
index.php?option=com_content&task=view&id=45&Itemid=64
On voit que les & sont transformés en &
J'ai tenté urlencode/urldecode mais ça ne change rien.
Comment résoudre ce pb?

Invité
Invité n'ayant pas de compte PHPfrance

29 mars 2007, 16:45

pareil avec htmlentities, rien de changé.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

29 mars 2007, 16:59

Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Invité
Invité n'ayant pas de compte PHPfrance

29 mars 2007, 17:21

j'ai tenté ceci:
var toto =  "<?php echo html_entity_decode($url_asso); ?>"; 
alert(toto);
ça ne change rien. Dans mon url php, j'ai également essayé de mettre les & en & mais c'est pas mieux...

Invité
Invité n'ayant pas de compte PHPfrance

29 mars 2007, 18:04

en fait le php n'a rien à voir avec php. C'est du pur javascript.
Un simple alert("&"); me renvoie &
Le pire c'est que alert("&"); me renvoie aussi &

La g suis perdu, honneur aux connaisseurs.

Invité
Invité n'ayant pas de compte PHPfrance

29 mars 2007, 18:05

je voulais dire: le pb n'a rien à voir avec php