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 :

addEventListener sur une div créé dynamiquement


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2023
    Messages
    3
    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 2023
    Messages : 3
    Par défaut addEventListener sur une div créé dynamiquement
    Bonjour,
    J'ai <div id="conteneurcarte"></div> dans mon html.
    J'ai une variable globale "let startnumbercards = 5;" dans mon javascript.
    Ce code me permet de rajouter dans cette div, d'autres divs "<div id='carteX' class='carte'>aa</div>" à l'intérieur, et un nombre égal à ma variable:
    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
    let startnumbercards = 5;
     
    window.addEventListener("load", createcards);
    function createcards(){
        for (let i=0;i<startnumbercards;i++){
     
            //Methode 1:
            let listcards = [];
            listcards[i] = "<div id='carte" + [i+1] + "' class='carte'>aa</div>";
            document.getElementById("conteneurcarte").insertAdjacentHTML("beforeend", listcards[i]);
     
            /*
            //Methode 2:
            var newdiv = document.createElement('div');
            newdiv.id = 'carte' + [i+1];
            newdiv.className = 'carte';
            newdiv.innerHTML = 'aa';
            document.getElementById("conteneurcarte").appendChild(newdiv);
            */
        }
    }
     
     
    document.getElementById("carte1").addEventListener("click", dosomething);
    function dosomething() {
        console.log("yay");
    }

    Mais le addEventListener pose problème, quand je fais appel à lui vu que la div n'existe pas initialement, il m'envoie le message
    Uncaught TypeError: document.getElementById(...) is null
    Est-ce possible? Merci.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 631
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 631
    Par défaut
    vous pouvez faire cela en créant un objet Element comme cela
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    const carte = document.createElement("div");
    carte.addEventListener("click", ...);
     
    // ajout du contenu
    carte["textContent"] = "bla bla;"
     
    // ajout d'une classe css
    carte.setAttribute("class", "carte");
     
     
    // et plus tard vous insérez cette élément dans le contenu html
    document.getElementById("conteneurcarte").insertAdjacentElement("beforeend", carte);

    regardez là pour plus d'informations sur l'objet Element
    https://developer.mozilla.org/fr/docs/Web/API/Element

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2023
    Messages
    3
    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 2023
    Messages : 3
    Par défaut
    Oh je viens de comprendre mon problème via votre code.
    Je pensais que le "addEventListener" devait être à l'extérieur des fonctions, alors qu'il peut être mis dedans.

    Du coup rien qu'en déplaçant une ligne de mon code ça marche. (ligne 24 à ligne 11)
    Merci

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

Discussions similaires

  1. IE6: coins arrondis sur une div
    Par Invité dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 23/08/2007, 19h03
  2. [Form] Superposition d'une liste select sur une div 'absolute'
    Par BRAUKRIS dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 09/02/2007, 18h43
  3. [DOM] Pb gestion de l'évènement mouseout sur une <DIV>
    Par rvux69 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/01/2007, 21h27
  4. Effet déroulant sur une div
    Par supersmoos dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 09/01/2007, 11h18
  5. Clik sur une <DIV>
    Par Commodore dans le forum Langage
    Réponses: 3
    Dernier message: 22/07/2006, 13h41

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