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 :

[DOM] Appel de fonction dans les événements


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 8
    Points
    8
    Par défaut [DOM] Appel de fonction dans les événements
    Bonjour,

    Je rencontre un problème récurent dans mes scripts JS, dont voici un exemple simplifié :

    Normalement, les deux codes suivants sont sencés donner le même résultat.

    Dans le premier, on affiche simplement un formulaire select avec un appelle à la fonction alert en cas de clique sur l'une des option.

    Dans le second, au lieu de d'afficher directement le code, on le génére au chargement de la page (grâce à l'appelle à la fonction ma_page() via onLoad dans le body) en modifiant le DOM. Hors dans ce code, l'événement onClick appellant la fonction alert ne semble pas être pris en compte... C'est à dire que lorsqu'on clique sur une option, rien ne se passe

    Ma question est donc pourquoi ?

    Code n°1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <body>
    <select>
    <option onClick="alert('Bonjour')">Bonjour</option>
    <option onClick="alert('Aurevoir')">Aurevoir</option>
    </select>
    </body>
    Code n°2
    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
     
    <!-- Code JavaScript ne prennant pas en compte les événements !-->
    <script type="text/javascript">
    function ma_page()
    {
    	// Récupération de l'objet body
    	var obj = document.getElementById("page");
     
    	// Création du nouveau select
    	var nouveau = document.createElement("select");
     
    	// Création de l'option bonjour
    	var bonjour = document.createElement("option");
    	bonjour.onClick = "alert('Bonjour')"; // On ajoute onClick="alert('Bonjour')" à l'option Bonjour
    	bonjour.appendChild(document.createTextNode("Bonjour"), bonjour.firstChild); // On écrit Bonjour entre les deux balises de option
    	nouveau.appendChild(bonjour, nouveau.firstChild); // On met l'option Bonjour dans le select
     
    	// Création de l'option aurevoir
    	var aurevoir = document.createElement("option");
    	aurevoir.onClick = "alert('Aurevoir')"; // On ajoute onClick="alert('Aurevoir')" à l'option Aurevoir
    	aurevoir.appendChild(document.createTextNode("Aurevoir"), aurevoir.firstChild); // On écrit Aurevoir entre les deux balises option
    	nouveau.appendChild(aurevoir, nouveau.firstChild); // On met l'option Aurevoir dans le select (donc à la suite de l'option Bonjour)
     
    	// Ajout du select dans le body de la page
    	obj.appendChild(nouveau, obj.firstChild);
    }
    </script>
    <body onLoad="ma_page()" id="page">
    </body>

  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,
    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bonjour.onclick = function() {alert('Bonjour');}
    Sinon, même dans le 1° cas, mieux vaut gérer le onclick au niveau du select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <select onclick="alert(this.value);">
    <option value="Bonjour">Bonjour</option>
    <option value="Au revoir">Au revoir</option>
    </select>
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 89
    Points : 102
    Points
    102
    Par défaut
    Salut,

    Un évènement est une fonction et non une chaine de caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bonjour.onClick = "alert('Bonjour')";
    doit s'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bonjour.onclick = function() { alert('Bonjour'); }

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    La combinaison de vos deux propositions marche impécablement bien


  5. #5
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Clique sur ton bouton

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/10/2011, 20h27
  2. Appeler une fonction dans un évènement de JTree
    Par Storke dans le forum Langage
    Réponses: 2
    Dernier message: 15/03/2011, 13h47
  3. Appeler une fonction dans un autre cadre !
    Par rich25200 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/11/2005, 13h01
  4. Réponses: 7
    Dernier message: 10/09/2005, 16h49
  5. [langage] Appel de fonction dans un lien
    Par drakan dans le forum Langage
    Réponses: 1
    Dernier message: 17/05/2005, 18h30

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