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 :

Argument d'une fonction onclick dans �l�ments cr��s en boucle


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Agriculteur
    Inscrit en
    Juillet 2012
    Messages
    39
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : Agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 39
    Par d�faut Argument d'une fonction onclick dans �l�ments cr��s en boucle
    Salut salut !

    Je bloque sur un souci, qui semble assez simple :

    Utilisant leaflet (API g�o), je souhaite cr�er des zones int�ractives,
    Sauf que chaque zone est cr��e en js, dans une boucle utilisant des donn�es stock�es dans un tableau.

    Je souhaite passer dans la fonction onclick un argument diff�rent pour chaque zone (un peu normal il semble )
    J'ai essay� pas mal de choses, mais je bloque complet...
    Extrait de 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
    28
    29
    30
    31
    32
    33
    34
    35
     
    for (i = 0; i < NbParcelles; i++) 
                    {
                    //console.log('I '+i);
                    var CoordsString;
                    var nom = parcelles[i][0];// tableau [i][x], avec pourx : 0 = nom ; 1 = coordonnées (array)
                    var coords = parcelles[i][1];
                    //console.log ("coords " +coords);
    				//console.log ("coords{1] " +coords);
                    zone.lenght = i;
                    try {
                    zone[i]= L.polygon(coords,{
                            color: 'green',
                            weight: 10,
                            opacity: 0.7})
     
    						.addTo(map);
     
    //-----------C'est là que je n'arrive pas à trouver la bonne formule---------
    				zone[i].addEventListener(
    				"click",
    				function(){selectionner(nom)});
     
    				}// ne marche pas (lance la fonction avec le dernier "nom" de la boucle)
    				catch{"souci pour "+ nom}
     
                    } //fin for i  
     
     
     
    		 function selectionner(id_sel){
    		console.log("sélection : "+ id_selection);
    		document.getElementById("nom_selection")="Sélec    : <b>"+id_sel+"</b>";   
     
     	  }
    Merci d'avance pour votre aide !!

  2. #2
    Expert confirm�
    Avatar de ProgElecT
    Homme Profil pro
    Retrait�
    Inscrit en
    D�cembre 2004
    Messages
    6 132
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 69
    Localisation : France, Haute Savoie (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Retrait�
    Secteur : Communication - M�dias

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 6 132
    Par d�faut
    Salut
    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
    			for (i = 0; i < NbParcelles; i++) 
                    {
    					//console.log('I '+i);
    					var CoordsString;
    					var nom = parcelles[i][0];// tableau [i][x], avec pourx : 0 = nom ; 1 = coordonnées (array)
    					var coords = parcelles[i][1];
    					//console.log ("coords " +coords);
    					//console.log ("coords{1] " +coords);
    					zone.lenght = i;
    					try {
    							zone[i]= L.polygon(coords,{
    								color: 'green',
    								weight: 10,
    								opacity: 0.7})
    							.addTo(map).on('click', selectionner(nom));
    					}
    					catch{"souci pour "+ nom}
     
                    } //fin for i  
     
    			function selectionner(id_sel){
    				console.log("sélection : "+ id_selection);
    				document.getElementById("nom_selection")="Sélec    : <b>"+id_sel+"</b>";   
    			}
    il me semble.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont d�pann�s.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre averti
    Homme Profil pro
    Agriculteur
    Inscrit en
    Juillet 2012
    Messages
    39
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : Agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 39
    Par d�faut
    Salut Prog,

    Merci de ton aide !
    Alors l� �a me fait un truc incompr�hesible lors du test : la fameuse fonction "selectionner()" se lance lors de la cr�ation de la page pour TOUS les noms, puis zones incliquables

    Une id�e ? Je fouille de mon c�t�
    Code test�
    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
            var zone=new Array();
            var NbParcelles = parcelles.length;
            console.log('nb parcelles'+NbParcelles);
            for (i = 0; i < NbParcelles; i++) 
                    {
                    //console.log('I '+i);
                    var CoordsString;
                    var nom = parcelles[i][0];// tableau [i][x], avec pourx : 0 = nom ; 1 = coordonnées (array)
                    var coords = parcelles[i][1];
                    //console.log ("coords " +coords);
    				//console.log ("coords{1] " +coords);
                    zone.lenght = i;
                    try {
                    zone[i]= L.polygon(coords,{
                            color: 'green',
                            weight: 10,
                            opacity: 0.7})
     
    						.addTo(map)
    						.on('click', selectionner(nom));
     
    				}
    				catch{"souci pour "+ nom}
     
                    } //fin for i  
     
     
     
    		 function selectionner(id_sel){
    		console.log("sélection : "+id_sel);
    		document.getElementById('nom_selection').innerHTML="Sélec    : <b>"+id_sel+"</b>";   
    		 }

  4. #4
    Membre averti
    Homme Profil pro
    Agriculteur
    Inscrit en
    Juillet 2012
    Messages
    39
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : Agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 39
    Par d�faut R�solu
    Euh pardon,
    Auto r�solution developpez.com
    https://javascript.developpez.com/fa...lick.dynamique

    Je suis pas le premier � �tre plant�
    Merci � la communaut� !

  5. #5
    Expert confirm�
    Avatar de ProgElecT
    Homme Profil pro
    Retrait�
    Inscrit en
    D�cembre 2004
    Messages
    6 132
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 69
    Localisation : France, Haute Savoie (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Retrait�
    Secteur : Communication - M�dias

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 6 132
    Par d�faut
    Re

    L'important �tant que ton probl�me est r�solut, il me semble bien que tu pouvais faire aussi
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    zone.push(L.polygon(coords,{
                            color: 'green',
                            weight: 10,
                            opacity: 0.7})
     
    						.addTo(map)
    						.on('click', selectionner(nom)));
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont d�pann�s.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Mod�rateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Bonjour,
    Citation Envoy� par ProgElecT
    il me semble bien que tu pouvais faire aussi
    en faisant de la sorte au moment de l'affectation sur l'�v�nement onclick tu ex�cutes la fonction, remplace ta fonction selectionner(nom) par un console.log(nom) et regarde ce qui se passe dans la console.


    Citation Envoy� par Farmer64
    La faq est un peu ancienne et m�riterait d'�tre mise � jour, mais je vois qu'elle est encore utille

    Concernant ton soucis tu peux r�gler cela d'une � mani�re plus moderne �

    Quelque chose comme, � tester :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    const zone = [];
    parcelles.forEach((parcelle) => {
      const nom = parcelle[0];
      const coords = parcelle[1];
      zone.push(L.polygon(coords, {
          color: 'green',
          weight: 10,
          opacity: 0.7
        })
        .on('click', () => {
          selectionner(nom)
        })
        .addTo(map));
    });

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [XL-2003] Probl�me dans les arguments d'une fonction
    Par ClementZa dans le forum Macros et VBA Excel
    R�ponses: 6
    Dernier message: 27/12/2010, 15h27
  2. R�ponses: 1
    Dernier message: 01/04/2010, 14h49
  3. R�ponses: 7
    Dernier message: 22/06/2008, 00h05
  4. R�ponses: 11
    Dernier message: 18/02/2007, 15h37
  5. Une fonction javascript dans un �v�nement onClick
    Par Lomig dans le forum G�n�ral JavaScript
    R�ponses: 6
    Dernier message: 17/01/2007, 21h52

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