Fonction avec boucle for qui ne marche pas [Résolu]

Signaler
Messages postés
14
Date d'inscription
mardi 24 février 2009
Statut
Membre
Dernière intervention
7 mai 2009
-
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
-
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

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
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
Messages postés
14
Date d'inscription
mardi 24 février 2009
Statut
Membre
Dernière intervention
7 mai 2009

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
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
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
@+