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 :

Générer un événement [Débutant(e)]


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Points : 10
    Points
    10
    Par défaut Générer un événement
    Bonjour, je suis en train de me battre pour générer un évènement et je vois pas où ça pêche...
    Le but étant au clic de générer un "yes" tout simplement et je vois pas pourquoi ça ne fonctionne pas ...
    Qui pourrait regarder et me dire où est mon erreur ?
    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
    <!DOCTYPE>
    <HTML>
    <HEAD>
        <meta charset="utf-8">
        <title>test</title>
        <link rel="stylesheet" href="style.css" type="text/css">
     
        </HEAD>
    <body>
        <button id="test1">Try it !!</button>
          <script type="text/javascript">
        function hello() 
            {alert('Yes !!!!');
            }
        function remp()
            {var moi=document.getElementById("test1");
             moi.addEventListener('onclick', hello, false);}
     
        </script>
           </body>
    </HTML>
    Merci
    Cdt
    Squeek

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    tout cela est très bien mais à quel moment appelles tu ta fonction remp() ?

  3. #3
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    moi.addEventListener('onclick', hello, false);
    onclick n'est pas un événement valide dans ce cas là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    moi.addEventListener('click', hello, false);
    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

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Points : 10
    Points
    10
    Par défaut
    Bonsoir je viens de faire les corrections et ça ne fonctionne toujours pas !

    Je comprends pas trop d'ailleurs le fait d'appeller la fonction, sur les quelques exemples que j'ai pu voir il ne demande jamais un appel de fonction, pourriez-vous m'éclairez ?

  5. #5
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par squeek Voir le message
    Je comprends pas trop d'ailleurs le fait d'appeller la fonction, sur les quelques exemples que j'ai pu voir il ne demande jamais un appel de fonction
    En effet, pour reprendre l'exemple de ton code, il ne demande jamais l'appel de la fonction hello. C'est la magie des gestionnaires d'évènements, et je ne choisis pas ce mot par hasard : ça paraît vraiment magique quand on débute.

    Tout d'abord corrigeons les mots que tu as employés dans le titre de ce topic : « générer un évènement ». Ce n'est pas toi qui génères l'évènement, c'est la mécanique interne du navigateur. Ce que tu fais toi, c'est inscrire un gestionnaire (listener) d'évènement. Un gestionnaire d'évènement c'est juste une fonction. Ta fonction hello est un gestionnaire d'évènement. Quand tu appelles addEventListener, tu dis au navigateur « je voudrais que tu écoutes (listen) les évènements de tel type, et quand il y en a un tu appelles telle fonction ». C'est donc le navigateur qui appelle ta fonction.

    Voici ce qui se passe dans ton code : dans la fonction remp, tu inscris hello comme gestionnaire d'évènement. Cependant, la fonction remp n'est jamais appelée. Donc le gestionnaire hello n'est jamais inscrit.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Points : 10
    Points
    10
    Par défaut
    Merci !!

    Je viens de comprendre mon erreur, il suffissait d'appeller la fonction ainsi.
    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
    <!DOCTYPE>
    <HTML>
    <HEAD>
        <meta charset="utf-8">
        <title>test</title>
     
     
        </HEAD>
    <body>
        <button onload="remp();" id="test1">Try it !!</button>
          <script type="text/javascript">
        function hello() 
            {alert('Yes !!!!');
            }
        function remp()
            {var moi=document.getElementById("test1");
             moi.addEventListener('click', hello, false);}
        window.onload= remp;
     
     
        </script>
           </body>
    </HTML>

  7. #7
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    En effet

    Pour aller plus loin au sujet des évènements load, quelques remarques :

    – Les <button> ne lancent jamais d'évènement load, donc ton attribut onload="remp()" ne sert à rien.

    – Les seuls éléments qui lancent un évènement load sont ceux qui utilisent le réseau pour obtenir des données, il y a donc naturellement les objets window et document ainsi que le <body>, mais aussi les <img> et les objets inclus tels que les <iframe> et aussi (je crois) <object>.

    – Le tuto que tu suis parle du DOM niveau 0 ; window.onload en fait partie. Utilise de préférence l'équivalent DOM niveau 2, surtout pour l'évènement load car il est courant que tu aies besoin de cet évènement à plusieurs endroits dans ton script (toi-même ou des bibliothèques tierces que tu utilises).

    – L'évènement DOMContentLoaded (sur l'objet document) est une alternative intéressante à load : ce dernier n'est lancé que quand toutes les ressources de la page (les éléments qui lancent eux-mêmes des load) ont fini de charger, ce qui peut prendre du temps. À l'inverse, DOMContentLoaded est lancé dès que la structure HTML de la page a été analysée et l'arbre DOM construit. Si tu tires parti de cet évènement, tes scripts peuvent commencer à agir pendant que les ressources externes terminent leur chargement, et ta page donne une plus grande impression de rapidité, même si par exemple elle inclut des images lourdes.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

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

Discussions similaires

  1. GTK+ générer des événements.
    Par wang dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 09/01/2008, 15h48
  2. Réponses: 1
    Dernier message: 12/09/2007, 19h54
  3. Générer un évènement à partir d'un élément de formulaire
    Par liloute8092 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 19/02/2007, 22h38
  4. Réponses: 2
    Dernier message: 07/06/2006, 09h29
  5. générer un évènement
    Par smash31 dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 05/07/2004, 16h02

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