[Javascript]problème avec for

problème avec for [Javascript] - HTML/CSS - Programmation

Marsh Posté le 24-05-2005 à 19:51:11    

Hello,
VOilà, j'ai repris un tutoriel d'alsacreations et j'essaie de le modifier. Mon problème se situe dans le for au niveau du "teste.firstChild.nodeValue = document.getElementById('galerie_mini').getElementsByTagName('img')[i-1].alt"
 
: le i-1 vaut TOUT le temps sa valeur maximale (10), comme si il était après le for(mais pas dedans).Je voudrais que quand on clic sur le lien i, teste prenne la valeur alt de l'image i et pas de l'image 10
 
 

Citation :

function displayPics()
{
 var photos = document.getElementById('galerie_mini') ;
 // On récupère l'élément ayant pour id galerie_mini
 var liens = photos.getElementsByTagName('a') ;
        var descri = document.getElementById('galerie_mini').getElementsByTagName('img').alt ;
 // On récupère dans une variable tous les liens contenu dans galerie_mini
 var big_photo = document.getElementById('big_pict') ;
 // Ici c'est l'élément ayant pour id big_pict qui est récupéré, c'est notre photo en taille normale
 
 var titre_photo = document.getElementById('photo').getElementsByTagName('dt')[0] ;
 // Et enfin le titre de la photo de taille normale
 
        var teste= document.getElementById('description') ; //MODIF
 // Une boucle parcourant l'ensemble des liens contenu dans galerie_mini
 
 
for (var i = 0 ; i < liens.length ; ++i) {
 // Au clique sur ces liens  
  liens[i].onclick = function() {
   big_photo.src = this.href; // On change l'attribut src de l'image en le remplaçant par la valeur du lien
   big_photo.alt = this.title; // On change son titre
   titre_photo.firstChild.nodeValue = this.title; // On change le texte de titre de la photo
   teste.firstChild.nodeValue = document.getElementById('galerie_mini').getElementsByTagName('img')[i-1].alt ;//MODIF
                        return false; // Et pour finir on inhibe l'action réelle du lien
  };
 }
 
 
 
 
 
 
}
window.onload = displayPics;
// Il ne reste plus qu'à appeler notre fonction au chargement de la page
 


 
Ca doit etre du javascript tout bete mais je comprend pas.

Reply

Marsh Posté le 24-05-2005 à 19:51:11   

Reply

Marsh Posté le 24-05-2005 à 19:55:00    

Problème de scope : tu met dans le onclick une fonction, où figure ta variable i, qui est locale au for. Donc une fois le for effectué, i va valoir 10. Et donc dans l'appel du onclick, ce sera toujours 10... Faut bricoler avec un eval je crois, fouille sur ce forum, ça a été donné

Reply

Marsh Posté le 24-05-2005 à 22:42:11    

Je suis totalement noob en javascript(mais je me documente plein), et donc je comprend pas pourquoi le i est "local" au for puisque  
1)liens[i] il "marche" correctement
2)Je crois(mais je me trompe pe) que la ligne avec le [i-1] est dans le for au m^me titre que le lien[i]?
 
Je dois sans doute mal interpreter le fonctionnment de la boucle "for"(surtout le "2)" ).Je précise que je me débrouille en VB et C++ donc c'est pas que je comprend pas le fonctionnement global d'une boucle for, mais plus le fonctionnment en JS.
 

Reply

Marsh Posté le 24-05-2005 à 22:58:47    

Comme dit, au moment où le onclick sera appellé, il tombera sur cette ligne :

teste.firstChild.nodeValue = document.getElementById('galerie_mini').getElementsByTagName('img')[i-1].alt ;


Note qu'il verra un i, il ne verra pas un nombre genre 1, 2, 3... Donc il remplaçera le i par sa valeur, qui à ce moment sera 10.

Reply

Marsh Posté le 27-05-2005 à 14:31:16    

Ahhhh je commence a comprendre.Merci.
Par contre j'ai cherché "eval" et j'ai rien troiuvé qui m'intéresserait. Est ce que c'est techniquement possible d'associer au click sur le lien i une variable qui corespondrait à l'index du lien clické(i) ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed