11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous, c'est la première fois que je post sur ce forum, car d'habitude je réussis à trouver la réponse à mes questions, mais cette fois-ci je n'y parviens tout simplement pas! Sur ma page html, il y a des une série de lien avec des ID différents allant de 4 à plusieurs tout dépendant la page se nommant "image1", "image2", etc.

Ces liens ont pour but de faire changer l'image actuellement affiché par une autre avec une transition en fondu. Donc mon code ici à pour but d'associer l'événement "click" à chacune de ces images dépendemment si elle existe sur la page ou non. Il est très facile de créer à chaque lien son addEvent indépendemment, mais ça n'a rien d'optimal. C'est pour cette raison que je veux associer le "click" dans une boucle.

Mon problème est que le addEvent fonctionne seulement quand je clique sur le lien et non a l'initialisation de ma page, ce qui a pour effet que seulement le dernier fonctionne.

Comment puis-je associer mon addEvent à une liste d'élément qui varie à chaque page?

Merci beaucoup pour votre temps et votre aide!



Voici le code :

var el = $('myElement');
var el2 = $('myElement2');
el.style.opacity=1;
//-vertical

var myVerticalSlide = new Fx.Slide('vertical_slide');

for(cpt=1;;cpt++){
if(document.getElementById('image'+cpt)){
$('image'+cpt).addEvent('click', function(e){
var maSrc=cpt+".png";
if (status[myVerticalSlide.open]=="open"){
if(el.style.opacity==1){
e.stop();
el2.src=maSrc;
el.fade(0);
el2.fade(1)
}else{
e.stop();
el.src=maSrc;
el.fade(1);
el2.fade(0)
}
}else{
e.stop();
el.src=maSrc;
myVerticalSlide.slideIn();
}
})
}else{
//alert('Ca sort du loop au cpt'+cpt)
break;
}
}
Modifié par mathg16 (09 Dec 2008 - 23:42)
Ahh je viens de comprendre ce qui ne fonctionnait pas! C'est ridicul j'ai trouvé la solution 10 minutes après avoir posté! Mon problème n'était pas au niveau du addEvent, mais bien au niveau de la source de mon image.

La valeur du compteur au moment du clic était toujours à sa dernière valeur puisque cette action se passait après que le compteur ait terminé sa boucle. J'ai donc procédé d'une autre façon pour aller chercher le bon numéro d'image correspondant au lien.

Problème résolu!