Fonction avec boucle for qui ne marche pas

Résolu
toons43 Messages postés 14 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 7 mai 2009 - 6 mai 2009 à 17:33
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 7 mai 2009 à 13:35
Bonjour à tous,

J'ai un souci avec une fonction que j'ai crée, c'est une fonction qui me permet de zoomer des thumbnails (6 en tout) en changeant le contenu d'un div par un autre

voici ma fonction :
function change() {
 var imgs = document.getElementById('sidebar').getElementsByTagName('img'); //Je recupère les thumbnails
 for (i = 0; i < imgs.length; i++){
  imgs[i].onmouseover=function() {
//pour chaque thumbnail je supprime mon div texte et j'affiche le div zoom avec le chemin de ma grande photo
   document.getElementById('zoom').style.display='block';
   document.getElementById('texte').style.display='none';
   document.getElementById('zoomimg').src='images/photos/photo'+i+'.jpg';
   }
  imgs[i].onmouseout=function() { 
//je supprime mon div zoom et je reaffiche le div texte
   document.getElementById('zoom').style.display='none';
   document.getElementById('texte').style.display='block';
   }
 }
}

Tout marche, enfin presque sinon je ne poserai pas de question, l'image qui s'affiche dans le div zoom est toujours la numero 6 (la dernière)
Je ne comprend pas pourquoi, comment faire pour que la variable i soit egale à la bonne image lorsque je passe dessus.

J'attend vos remarques et corrections

D'avance merci

3 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
7 mai 2009 à 11:17
Bonjour,
"souci connu"

au lieu de
 imgs[i].onmouseover=function() { ...
   document.getElementById('zoomimg').src='images/photos/photo'+i+'.jpg';
   }

faire ( solution proposée par petolTeam en son temps )
   var obj=imgs[i];

   obj.num = i;
   obj.onmouseover=function() { ...
       document.getElementById('zoomimg').src='images/photos/photo'+this.num+'.jpg';

   }

  on peut aussi passer par  obj.onmouseover=function(ind)
                                   { return function()
                                      { ...  }
                                   } (i);

si tu veux un ch'tiot exemple, c'est ici

Cordialement [mon Site] [M'écrire] Bul
3
toons43 Messages postés 14 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 7 mai 2009
7 mai 2009 à 13:01
Waouuuuuuu

Génial ça marche, merci beaucoup
Je commençais à croire qu'il n'était pas possible de récupérer le bon indice
En tout cas, un truc comme ça il faut le savoir, je me coucherais mon bête

Encore merci
A bientôt
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
7 mai 2009 à 13:35
pas simple à comprendre pourquoi ça ne fonctionne pas
il me semble.
après la méthode 1 ou 2, je ne saurais dire la meilleure,
si meilleure il y a !!!!
déjà, meilleure , ça ne veut pas dire grand chose
@+
0
Rejoignez-nous