IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Fonction et boucle for


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 137
    Par défaut Fonction et boucle for
    Bonjour,

    je comprend pas pourquoi mon code ne focntionne pas. Sans la boucle for il fonctionne très bien. Cependant pour éviter d'écrire huit fois la même chose j'y met une boucle for avec un array pour chacun des bouton. L'alert a la fin quel que soit le numéro (1 à 8) me retourne object HTMLDivElement, ce qui prouve que les div sont bien enregistrée dans l'array. Je me demande donc si il y a un soucis à faire appel à une fonction externe à la boucle ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    		// Compatibilité du oncmouseover sur les différents browser
    		function addEventSimple(obj,evt,fn){
    			if (obj.addEventListener)
    				obj.addEventListener(evt,fn,false);
    			else if (obj.attachEvent)
    				obj.attachEvent('on'+evt,fn);
    		}
     
    		if(document.getElementById('acm_bouton_1')!==null)
    		{
    		var bouton = new Array();
    			for(i=1;i<=8;i++)
    			{
    					bouton[i] = document.getElementById('acm_bouton_'+i);
    					addEventSimple(bouton[i], 'mouseover', function()
    					{
    						bouton[i].style.backgroundImage = "url(bouton/bouton_top_m_hover.png)";			
    					}
    					);
    					addEventSimple(bouton[i], 'mouseout', function()
    					{
    						bouton[i].style.backgroundImage = "url(bouton/bouton_top_m.png)";			
    					}
    					);
     
    			}
    		}
    		alert(bouton[2]);
    voilà, si qqun a une idée je suis tout ouïe

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bouton[i].style.backgroundImage = "url(bouton/bouton_top_m_hover.png)";
    Demande toi juste quelle est la valeur de i lorsque ce bout de code est appelé
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 137
    Par défaut
    tout d’abord merci de ta réponse.

    Cependant après avoir recherché une bonne partie de l'après-midi l'ordre d'execution en javascript, je dois dire que je n'ai rien trouvé de très concluant.
    Selon ma logique (qui est certainement fausse puisque cela ne fonctionne pas) je dirais que l'appel est fait à chaque stade de i (probabilité a 99% d'être faux).

    Par conséquent si il devait alors seulement se produire a la fin de la boucle for i serait égal à 9 dans mon cas et donc au moins la balise div avec l id 'acm_bouton9' devrait fonctionner correctement, or il n'en est rien.

    Si tu as lien pour m'expliquer le déroulement des évènements je suis preneur.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 208

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 137
    Par défaut
    bon ben finalement la réponse était pas très loin.

    http://www.developpez.net/forums/d12...ucle-fonction/

    l'encapsulation.

    merci.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 137
    Par défaut
    merci nosmoking j'ai trouvé la réponse en même temps.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 137
    Par défaut
    voici le code qui fonctionne (j'ai préféré la solution du forum parce que je la comprend parfaitement comparé à l'autre )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    		if(document.getElementById('acm_bouton_1')!==null)
    		{
    		var bouton = new Array();
    			for(i=1;i<8;i++)
    			{
    				(function(j)
    					{
    						bouton[j] = document.getElementById('acm_bouton_'+j);
    						addEventSimple(bouton[j], 'mouseover', function()
    						{
    							bouton[j].style.backgroundImage = "url(bouton/bouton_top_m_hover.png)";			
    						}
    						);
    						addEventSimple(bouton[j], 'mouseout', function()
    						{
    							bouton[j].style.backgroundImage = "url(bouton/bouton_top_m.png)";			
    						}
    						);
    					}
    				)(i);
    			}
    		}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/03/2013, 16h48
  2. Probleme dans une boucle for, faisant appel a une fonction
    Par mapotam dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 22/01/2010, 21h41
  3. boucle "for" ne fonctione pas pourquoi ?
    Par flysurfer dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 24/04/2008, 12h48
  4. Réponses: 18
    Dernier message: 25/07/2007, 12h34
  5. Fonction system() dans une boucle for
    Par banban56 dans le forum C
    Réponses: 3
    Dernier message: 16/06/2007, 18h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo