Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1721 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  changer onclick dans une boucle for

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

changer onclick dans une boucle for

n°2198113
polakdesil​es
Posté le 19-07-2013 à 15:59:42  profilanswer
 

Bonjour,
 
après quelques heures de recherche je ne trouve toujours pas la solution à mon problème apparemment simple:
 
Je dois modifier la propriété onclick() de plusieurs éléments en récupérant leur id a l'aide d'une boule for.
 

Code :
  1. //code test
  2. function changerOnclick() {
  3.  
  4.   for (i=0;i<10;i++)  {
  5.     var block=document.getElementById('id'+i);
  6.     block.onclick = function() {alert(i);};
  7.  
  8.   }
  9. }


 
Hélas lorsque je clique sur n'importe quel élément c'est toujours 10 la dernière valeur i affichée..
 
Ceci dans le but de pouvoir faire quelque chose comme:
 

Code :
  1. function changerOnclick() {
  2.  
  3.   for (i=0;i<10;i++)  {
  4.     var block=document.getElementById('id'+i);
  5.     block.onclick() = function () { changerBackground(block, 'green'); };
  6.  
  7.   }
  8. }


 
Idem quand je clique sur n'importe quelle balise c'est toujours la dernière n°10 qui est verte  :heink:  j'avoue que je ne comprend plus rien
 
Si quelqu'un a une piste il sera bienvenu , merci

mood
Publicité
Posté le 19-07-2013 à 15:59:42  profilanswer
 

n°2198143
mechkurt
Posté le 19-07-2013 à 17:25:22  profilanswer
 

Essaye de remplacer block par this dans changerBackground, mais je ne suis pas sur que l’élément soit passé quand on fait des DOM.onclick(), je pense qu'il faut sans doute repasser par l'event pour avoir accès a l’élément...
 
A mon avis tu devrais passer par une bibliothèque (Mootools ou jquery par exemple), tu te simplifierais la vie...


---------------
D3
n°2198148
sltpaulo
Posté le 19-07-2013 à 17:49:27  profilanswer
 

Salut, ton erreur viens car le JS va être exécuté entierement avant que tu ne click sur un bouton.
 
Ta valuer i vaut 10 partout, si tu utilise firbug(par exemple) tu peux vérifier ça en cliquant sur l'onglet "Events" puis regarde dans "click".
 
Pour une solution simple et rapide, connais-tu jQuery? L'utilises-tu?
 
Edit : Désolé mechkurt, je n'avais pas vu ton message


Message édité par sltpaulo le 19-07-2013 à 17:50:23
n°2198301
polakdesil​es
Posté le 22-07-2013 à 14:42:43  profilanswer
 

J'ai essayé en remplaçant block par this et ça marche nickel..
Je suppose que ce problème devrait apparaitre avec l'emploi de toute fonction dans une boucle-
 
Sinon je découvre jquery depuis quelques mois et c'est vrai que je ne pense pas toujours à l'utiliser..  
Merci pour votre aide :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  changer onclick dans une boucle for

 

Sujets relatifs
[RESOLU] trouver nombre de mots par ligne dans une boucle + sqlFaire une boucle avec un argument du tableau et définir si args=nombre
Problème changement d'image lors d'un onclickchanger le contenu de la balise "ul" en cliquant sur un lien
changer printf par une autre methodeA supprimer : doublons
Boucle while en erreur[VBA][Excel] UserForm modeless dans une boucle
Changer ligne d'un fichier texteProblème sur une boucle
Plus de sujets relatifs à : changer onclick dans une boucle for


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR