Javascript - problème de scan

Résolu
zoby44 Messages postés 818 Date d'inscription   Statut Membre Dernière intervention   -  
zoby44 Messages postés 818 Date d'inscription   Statut Membre Dernière intervention   -
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.

2 réponses

zoby44 Messages postés 818 Date d'inscription   Statut Membre Dernière intervention   199
 
Petit up
0
zoby44 Messages postés 818 Date d'inscription   Statut Membre Dernière intervention   199
 
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