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 :

Passer un paramètre à une fonction avec un gestionnaire d'évènements


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 49
    Points : 26
    Points
    26
    Par défaut Passer un paramètre à une fonction avec un gestionnaire d'évènements
    Bonjour,

    Comment fait-on pour passer un paramètre à une fonction si on utilise un gestionnaire d'évènement?

    J'ai une page php qui me renvoit plusieurs enregistrement depuis une base de données. J'ai crée un lien sur chaque ligne de résultat qui me permet de voir en détail un enregistrement. J'aimerais utiliser Ajax pour faire cela.

    Il est possible de faire cela ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ("<a href=# onclick=function(".$variable.");>ici</a>");
    Cependant, j'ai lu à plusieurs endroits que cela n'était pas conseillé...

    Je me demande donc comment réaliser la même chose avec une gestionnaire d'évènement (en utilisant prototype).

    J'aurais donc quelque chose comme ca:

    un lien:

    et le code javascript suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function bindElement()
    {
        Event.observe('hello', 'click', functionAvecParamètre);
    }
     
    Event.observe(window,  'load',bindElement );
     
    function functionAvecParamètre(???)
    {
       //récupération des paramètre pour effectuer une requete ajax
    }
    Comment peut-on réaliser cela?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    juste par curiosité pourquoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ("<a href=# onclick=\"tafonction('".$variable."');\">ici</a>");
    serait déconseillé ?
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 49
    Points : 26
    Points
    26
    Par défaut
    J'ai lu que cela était déconseillé car cela représente une intrusion du comportement dans le contenu...

    En effet, cela ne pose aucun problème technique mais c'est semble-t-il une question de séparation stricte du contenu et des comportements. C'est donc plus un état d'esprit de développement "propre"...

  4. #4
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2005
    Messages : 30
    Points : 34
    Points
    34
    Par défaut
    Il me semble qu'il y a une astuce avec les méthodes bind/bindAsEventListener
    Un truc dans le genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Event.observe(window, 'load', function(){
        Event.observe('hello', 'click', maFonction.bind(window, param1, param2));
     
    });
     
    function maFonction(param1, param2)
    {
       // et hop!
    }
    (Par contre.... j'ai pas testé ^^')


    Pour l'histoire de l'intrusion de comportement, j'utilise la même "manière de faire" que toi el_butcho, c'est dans le même état d'esprit que de séparer le design du contenu (css/html)

    Par contre, l'utilisation onclick=, onmouseover= etc. peut représenter un problème technique dans le cas où plusieurs gestionnaires d'évènements sont affectés à un même élément.
    évidement pour les liens, ça pose en général pas de problèmes mais quand on utilise plusieurs frameworks par exemple qui utilisent l'évènement onload de la page pour s'initialiser, le fait d'affecter directement (du style onload=[...]) écrase les anciens évènements qui sont liés. --> Donc modification du comportement existant, donc javascript obstusif (si j'ai bien compris la définition de l'obstrusion ^^')
    C'est pour ça qu'on passe souvent par des méthodes qui rajoutent un gestionnaire (addEventObserver() sous FF, attachEvent() sous IE, scindées sous Prototype par Event.observe() \o/ Hurray!)

Discussions similaires

  1. paramètrer une fonction avec un tableau de deux dimensions
    Par dark_geek dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/02/2010, 14h01
  2. Réponses: 2
    Dernier message: 22/10/2009, 09h22
  3. [Débutant] [ode15s] passer des paramètres à une fonction
    Par lecteur1001 dans le forum MATLAB
    Réponses: 6
    Dernier message: 09/07/2009, 16h02
  4. Passer des paramètres à une fonction dans before_filter
    Par abir84 dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 27/01/2008, 19h40
  5. Passer un paramètre à une macro avec Application.run
    Par ouskel'n'or dans le forum VBA Word
    Réponses: 1
    Dernier message: 05/10/2007, 15h20

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