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 :

Création d'éléments


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 15
    Par défaut Création d'éléments
    Bonjour,

    C'est la première fois je poste une discussion sur un forum alors si j'ai oublié quelque chose je m’en excuse d'avance.
    Alors j'ai commencer le javascript depuis peu et je suis face à un problème des plus agacent.
    Dans une page html, au sein d'une fonction je crée un bouton, je lui affecte une propriété '.onClick' mais rien se passe, l’élément apparait pourtant correctement.
    Donc si quelqu'un aurait une idée ce serait disons magnifique.
    Merci d'avance.

    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
    function test(player,div,id,btn) {
      player = new PreziPlayer(div, { 
    preziId: id, 
    width: 620,
    height: 444
    });
    player.on(PreziPlayer.EVENT_STATUS,  function mota (e) {
    if (player.getStatus() == 'contentready'){
    	var div = document.getElementById(btn);
    	var nouveauInput = document.createElement('input');
    	nouveauInput.id = 'nouveauId';
    	nouveauInput.type = 'image';
    	nouveauInput.class ='media';
    	nouveauInput.src = 'img/play.png';
    	nouveauInput.onClick=function(){alert('ok');}
    	div.appendChild(nouveauInput);
    } 
    });

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 15
    Par défaut
    Eh bien par le plus grand des hasards j'ai trouver une petite alternative qui fonctionne a merveille.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .addEventListener( 'click', function(){}
    Je connaissais la fonction mais pas la différence avec un simple .onClick.

  3. #3
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    c'est onclick et non pas onClick. En JavaScript, la casse est importante. Mais addEventListener est une meilleure méthode car elle te permet d'attacher plusieurs listeners sur un même évènement.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 15
    Par défaut
    Merci pour la précision mais si je peut me permettre, j'avais déjà étudié ce scénario et en effet il y a bien dans mon code des .onClick qui fonctionnent parfaitement

  5. #5
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    coup de bol ton navigateur l'accepte mais si ta page est exécuté sur un navigateur qui sui la norme il ne fonctionnera pas.

    en règle générale plutôt que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nouveauInput.type = 'image';
    pour ajouter un attribut mieux vaut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nouveauInput.addAttribute('type','image');
    en effet pour quelques navigateurs il existe despropriété de l'objet DOMElements qui correspond à autre chose que l'attibut. comme class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    myElement.className = 'MyClass';
    //ou
    myElement.setAttribute('class', 'MyClass');
    Soit tu respecte la norme et tu as des chances que ça marche partout
    soit tu ne la respectement est des soit de la POH (Programmation Orienté Hasard) ou encore PPC (Programmation Par Chance)

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

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Attention à certaines subtilités.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nouveauInput.class ='media';


    class est un mot réservé en JavaScript, pour affecter un nom de classe CSS, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nouveauInput.className ='media';
    Sinon, contrairement à addEventListener(), onclick correspond à une propriété (regarde la syntaxe), tu affectes donc une valeur à cette propriété, mais elle n'est pas cumulative : si tu redéclares un onclick, ça annule le précédent.
    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

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 15
    Par défaut
    Merci beaucoup pour ces précisions,
    Je vais donc adapter mon code à ces subtilités de langages.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/12/2007, 16h28
  2. [XML] [PHP] Création d'éléments fils
    Par iulius dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 12/06/2007, 11h34
  3. [AJAX] Création d'éléments de formulaire à partir des choix
    Par Drummkit dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/02/2007, 12h26
  4. EventDispatcherThread et création d'élément
    Par dingoth dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/12/2006, 16h54
  5. Réponses: 6
    Dernier message: 25/10/2004, 09h51

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