11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

je bloque là dessus... la syntaxe semble correcte et pourtant ça ne fonctionne pas.
le but est d'utiliser le texte des puces d'un menu pour créer les attribut "title" et "alt" d'images qui correspondent ...

mon souci est que la variable "i" de la fonction each() ne semble pas être utilisable dans le selecteur :eq().. en tout l'alert de test affiche un message vide.

si je teste mon selecteur en dehors de la fonction sans variable ça marche.
Où est-ce que je me trompe ?

code HTML
<div id="menu">
			<ul>
			<li>Situation de départ</li>
			<li>Étape 1</li>
			<li>Étape 2</li>
			<li>fin</li>
			</ul>
		</div>

...
<div id="anim">
 			<img src="anim/1.gif">
 			<img src="anim/2.gif">
 			<img src="anim/3.gif">
 			<img src="anim/4.gif">
 </div>


code jQuery

// pour chaque anim, on créé son texte survolé et alternatif en fonction du contenu de la puce correspondante
$('#anim img').each(function(i) {
	alert(i);
	var title = $("#menu li:eq(i)").text();
	alert(title);
	// On ajoute title et alt
	$(this).attr({ 
          title: title,
          alt: title
        });
});

// test en dehors
var title = $("#menu li:eq(2)").text();
alert(title);


Merci beaucoup pour votre attention !
Bonjour,

Le langage ECMAScript ne prévoit pas de substitution des variables dans les chaînes de caractères :
var i = 2;
alert("i"); // i
alert(i); // 2

alert("#menu li:eq(i)"); // #menu li:eq(i)
alert("#menu li:eq(" + i + ")"); // #menu li:eq(2)

Modifié par Julien Royer (20 Nov 2009 - 14:02)
Merci beaucoup, ça fonctionne !
j'avais tester ça déjà, mais avec des guillements simple au lieu de double.
ça ne marchait pas, et j'en avait déduit que le problème ne venait pas de là...

Bref, j'ai encore plein de détails à apprendre.
Merci encore !

EDIT : il semble qu'il faut utiliser toujours le même type de guillement dans une fonction (simple ou double)
Modifié par yagraph (20 Nov 2009 - 14:18)