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 avec paramètre sur onclick


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 159
    Points : 91
    Points
    91
    Par défaut Fonction avec paramètre sur onclick
    Bonjour à tous,

    Je savais déjà que l'on en pouvais pas assigner de fonction avec paramètre sur les onclick d'éléments HTML de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monElement.onclick = maFonction(param);
    Ce qui execute la fonction.

    J'ai donc cherché et vu que l'on pouvais faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monElement.onclick = function() { maFonction(param); }
    Ce qui marche pour un paramètre fixe, mais qui se gâte lorsque l'on veut faire changer le paramêtre en fonction de l'élement sur lequel on applique le onclick.

    Voici ma situation :
    Je possède un tableau d'élement HTML.
    Je possède également une fonction qui prend en paramêtre l'indice de l'élement dans ce tableau.
    Je voudrais, pour assigner à tous mes élements de mon tableau une fonction onclick faire quelque chose dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(i in monTableauDElement)
    {
       monTableauDElement[i].onclick = function() { maFonction(i); };
    }
    Ce code fonctionne, pas de bug à l'execution, mais pas comme je le veux.
    En effet, la valeur de i changeant tout au long de la boucle, tous mes élements finissent par appeler ma fonction avec comme paramêtre le i le plus grand.

    En pratique au lieu d'avoir ça (résultat attendu) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    monTableauDElement[0] = function() { maFonction(0); };
    monTableauDElement[1] = function() { maFonction(1); };
    monTableauDElement[2] = function() { maFonction(2); };
    monTableauDElement[3] = function() { maFonction(3); };
    J'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    monTableauDElement[0] = function() { maFonction(3); };
    monTableauDElement[1] = function() { maFonction(3); };
    monTableauDElement[2] = function() { maFonction(3); };
    monTableauDElement[3] = function() { maFonction(3); };
    J'ai essayé plein de bidouilles avec des eval, mais impossible de garder fixe mon i pour chacun de mes élements.

    Voila tout mon problème, j'espère avoir été le plus clair possible. Si vous ne comprenez pas un point faites le moi savoir.
    Si quelqun à une réponse ou un début de piste je suis preneur !!

    Merci d'avance.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    et la FAQ ?



    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 159
    Points : 91
    Points
    91
    Par défaut
    Merci beaucoup et désolé de n'avoir aps pris le temps de lire la FAQ.

    En même temps, le problème me semblait assez spécifique et je n'avais rien trouvé dessus auparavent.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Difré91 Voir le message
    Merci beaucoup et désolé de n'avoir aps pris le temps de lire la FAQ.
    Pas de problème : il était caché tout en bas de la liste

    A+

  5. #5
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Points : 3 583
    Points
    3 583
    Par défaut
    Pour ceux qui retombent la dessus comme moi, l'article en question de la FAQ est le suivant : http://javascript.developpez.com/faq...lick.dynamique

    (ça peut faire gagner de précieuses minutes...)

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

Discussions similaires

  1. Modifier onclick dynamiquement pour passer une fonction avec paramètres
    Par denisosteo dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/01/2014, 12h38
  2. [MySQL] fonction compteur de visite avec bdd sur onclick
    Par akara dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/06/2007, 14h13
  3. [Function]Appel de fonction avec paramètre
    Par julienOriano dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/06/2006, 07h48
  4. histoire de fonction avec problème sur arguments
    Par bébé dans le forum Langage
    Réponses: 5
    Dernier message: 07/01/2006, 11h29
  5. Réponses: 4
    Dernier message: 11/09/2005, 01h21

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