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 :

Boucle for et fonction


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 Boucle for et fonction
    Bonjour,

    j'ai un soucis avec mon code et je me demande si cela ne vient pas de l'attribution dans une fonction d'une variable issue de la boucle for voici mon code :
    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
     
    		for(i=1;i<=3;i++)
    		{
    			if(document.getElementById(i)!=null)
    			{
    				map_bouton[i] = document.getElementById(i);
    				map_appear[i] = document.getElementById(i+'b');
    				addEventSimple(map_bouton[i], 'mouseover', function()
    				{
    					map_appear[i].style.zIndex = '90';
    					text_affichage = '&nbspChancy';
    					text_affichage_prix = '<span style="color:red;">&nbspZone non delivrée</span>';
    					zone_affichage.innerHTML = text_affichage;
    					zone_affichage_prix.innerHTML = text_affichage_prix;
    				}
    				);
    				addEventSimple(map_bouton[i], 'mouseout', function()
    				{
    					map_appear[i].style.zIndex = '70';
    					text_affichage = '&nbsp-';
    					text_affichage_prix = '&nbsp-';
    					zone_affichage.innerHTML = text_affichage;
    					zone_affichage_prix.innerHTML = text_affichage;
    				}
    				);
    			}
    		}
    Quand je test avec firebug il me dit :
    "map_appear[i] is undefined"
    et c'est justement celui que j'ai mis dans la fonction.

    voici le html si toutefois:
    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
     
    				<Map name="carte_gva">
    				<area id="1" shape="poly" coords="10,422,10,415,26,401,23,388,38,356,53,357,70,334,79,332,103,345,72,365,60,369,50,384,48,401,38,413,31,414,24,419,15,417,10,422" >
    				<area id="2" shape="poly" coords="39,356,51,325,54,331,59,331,63,320,68,317,82,321,92,318,101,328,106,343,102,345,80,331,71,332,52,355,39,356">
    				<area id="3" shape="poly" coords="51,388,56,373,65,369,73,366,106,346,105,355,101,367,112,368,120,375,109,393,97,390,75,390,66,386,51,388">
    				</Map>
    				<img id="map_gva" src="image/geneve/carte_gva.png" usemap="#carte_gva" style="position:absolute; top:0px; left:0px; z-index:95; ">
     
     
    				<img id="1a" src="image/geneve/chancy.png" style="position:absolute;  left:11px; top:333px; z-index:80;">
    				<img id="1b" src="image/geneve/chancy_hover.png" style="position:absolute;  left:11px; top:333px; z-index:70;">	
     
    				<img id="2a" src="image/geneve/avully.png" style="position:absolute;  left:41px; top:317px; z-index:80;">
    				<img id="2b" src="image/geneve/avully_hover.png" style="position:absolute;  left:41px; top:317px; z-index:70;">
     
    				<img id="3a" src="image/geneve/avusy.png" style="position:absolute;  left:51px; top:346px; z-index:80;">
    				<img id="3b" src="image/geneve/avusy_hover.png" style="position:absolute;  left:51px; top:346px; z-index:70;">
    merci d'avance à ceux qui prendront le temps de répondre.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 210
    Par défaut
    Bonjour,
    un grand classique de chez classique, une solution ce trouve dans
    http://javascript.developpez.com/faq...lick.dynamique

  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
    hello,

    merci de ta réponse rapide j'ai donc un code qui fonctionne :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    		if(document.getElementById('map_gva')!=null)
    		{	
    			var map = document.getElementById('map_gva');
    			var zone_affichage = document.getElementById('lvr_zone');
    			var zone_affichage_prix = document.getElementById('lvr_zone_prix');
    			var map_bouton = [];
    			var map_appear = [];
    		//chancy
    		for(i=1;i<=3;i++)
    		{
    			if(document.getElementById(i)!=null)
    			{
    				map_bouton[i] = document.getElementById(i);
    				map_appear[i] = document.getElementById(i+'b');
    				map_bouton[i].indice = i;
    				map_bouton[i].addEventListener('mouseover', function()
    				{
    					i = this.indice;
    					map_appear[i].style.zIndex = '90';
    					text_affichage = '&nbspChancy';
    					text_affichage_prix = '<span style="color:red;">&nbspZone non delivrée</span>';
    					zone_affichage.innerHTML = text_affichage;
    					zone_affichage_prix.innerHTML = text_affichage_prix;
    				}
    				);
    				map_bouton[i].addEventListener('mouseout', function()
    				{
    					i = this.indice;
    					map_appear[i].style.zIndex = '70';
    					text_affichage = '&nbsp-';
    					text_affichage_prix = '&nbsp-';
    					zone_affichage.innerHTML = text_affichage;
    					zone_affichage_prix.innerHTML = text_affichage;
    				}
    				);
    			}
    		}
    		}
    le bémol c'est que je n'ai plus ma fonction de compatibilité entre navigateur. j'ai aussi vu d'autre solution avec un return function
    http://blog.jbrantly.com/2010/04/cre...on-inside.html

    Je voulais juste savoir si il était possible de trouver une manière de faire avec une fonction, et non pas le simple ajout "addEventListener" ?

    si ce n'est pas possible je ferais un contrôle dans ma boucle.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 210
    Par défaut
    Je voulais juste savoir si il était possible de trouver une manière de faire avec une fonction, et non pas le simple ajout "addEventListener" ?
    tu peux mettre directement la fonction sur les événements
    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
      var oElem, i = 1;
      while( ( oElem = document.getElementById( i)){
        map_bouton[i] = oElem;
        map_appear[i] = document.getElementById( i +'b');
        map_bouton[i].indice = i;
     
        map_bouton[i].onmouseover = function(){
          map_appear[this.indice].style.zIndex = 90; // zIndex doit être un Number
          zone_affichage.innerHTML = '&nbspChancy';
          zone_affichage_prix.innerHTML = '<span style="color:red;">&nbspZone non delivrée</span>';
        };
     
        map_bouton[i].onmouseout = function(){
          map_appear[this.indice].style.zIndex = 70; // zIndex doit être un Number
          zone_affichage.innerHTML = '&nbsp-';
          zone_affichage_prix.innerHTML = '&nbsp-';
        });
        i++;
      }

  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
    merci, ça joue parfaitement.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 210
    Par défaut
    une question se pose quand même, as tu besoin dans le reste de ton code des map_bouton[i] et des map_appear = [];, car dans ce cas tu peux faire du parfaitement trivial à savoir
    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
      var oElem, i = 1;
      while( ( oElem = document.getElementById( i)){
        oElem.onmouseover = function(){
          document.getElementById( this.id +'b').style.zIndex = 90;
          zone_affichage.innerHTML = '&nbspChancy';
          zone_affichage_prix.innerHTML = '<span style="color:red;">&nbspZone non delivrée</span>';
        };
     
        oElem.onmouseout = function(){
          document.getElementById( this.id +'b').style.zIndex = 70;
          zone_affichage.innerHTML = '&nbsp-';
          zone_affichage_prix.innerHTML = '&nbsp-';
        });
        i++;
      }

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

Discussions similaires

  1. [Débutant] Boucle for en fonction de l'année
    Par terravina dans le forum MATLAB
    Réponses: 3
    Dernier message: 25/02/2015, 09h23
  2. Boucle for en fonction d'une valeur de champ
    Par LutorCorp dans le forum jQuery
    Réponses: 15
    Dernier message: 04/03/2014, 15h24
  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