Javascript - problème de scan

Résolu/Fermé
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 - 6 avril 2009 à 19:50
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 - 7 avril 2009 à 00:49
Bonjour tout le monde, j'ai besoin de créer un petite lightbox. J'utilise fckeditor pour mettre en ligne mes articles, et comme je suis fainéant, je n'ai pas envie d'éditer en html pour rajouter une petit truc genre "onclick='...'" donc j'ai fait un script qui scan les images de la page et qui l'ajoute automatiquement. Mais je bloque.

Voila le script :
function addEvent(obj,event,fct){
     if(obj.attachEvent)
        obj.attachEvent('on' + event,fct);
     else
        obj.addEventListener(event,fct,true);
}

// Au chargement
window.onload = function () {
	var sImg = document.getElementsByTagName('img');
	var n = sImg.length;
	
	// On scan toutes les <img...
	for (i=0; i<n; i++) {
	
		var obj = sImg[i];
		
		// On définit l'action pour chaque
		addEvent(obj,'click',function (){sLight(obj)});
		
		document.getElementById('test').innerHTML += obj.src+'<br>';
	}
}

function sLight(sUrl) {
	alert(sUrl.src);
}


Le problème, c'est quand je clic sur une image l'alert() s'ouvre bien, mais il m'indique a chaque fois l'url de la dernière image.

J'ai remplacer la ligne
addEvent(obj,'click',function (){sLight(obj)});

par
addEvent(obj,'click',function (){sLight(this)});

Ça fonctionne nickel sous Firefox, mais pas sous IE (8 et 6).

J'ai aussi remplacer le "obj" par "obj.src" en faisant la modif dans la fonction sLight(). Rien a faire, toujours l'url de la dernière image qui s'affiche.
Bref, j'ai retourné le problème dans tout les sens, rien a faire.
Je tiens aussi a préciser que dans mon div "test", toutes les urls s'affichent correctement.
Si quelqu'un peut me dire d'où ça viens, ce serait génial.
Merci.
A voir également:

2 réponses

zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
6 avril 2009 à 23:09
Petit up
0
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
7 avril 2009 à 00:49
Pour ceux que ça peut intéresser, j'ai la solution :

addEvent(obj,'click',(function (objet){
			return function() {
				sLight(objet)
			};
		})(obj));


Merci le SDZ.
0