Page 1 sur 1

pb de fonction js

Posté : 29 mars 2007, 11:19
par Invité
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.

Posté : 29 mars 2007, 11:36
par Invité
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...

Posté : 29 mars 2007, 11:37
par Ryle
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 :)

Posté : 29 mars 2007, 14:23
par Invité
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?

Posté : 29 mars 2007, 16:45
par Invité
pareil avec htmlentities, rien de changé.

Posté : 29 mars 2007, 16:59
par mere-teresa

Posté : 29 mars 2007, 17:21
par Invité
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...

Posté : 29 mars 2007, 18:04
par Invité
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.

Posté : 29 mars 2007, 18:05
par Invité
je voulais dire: le pb n'a rien à voir avec php