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 Firefox, pourtant


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Par défaut addEventListener sur Firefox, pourtant
    Bonjour

    Je cherche à afficher dynamiquement des DIV à l'aide d'une boucle, qui ont cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="totoId" class="totoClass" onClick="clic(totoId);">Contenu de mon div</div>
    Voici une partie du code qui permet de faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    d=document.createElement("div");
    d.id="toto"+tab[i];
    d.className="totoClass";
    d.appendChild(document.createTextNode("Contenu de mon div"));
    Maintenant, j'aimerais pouvoir ajouter un événement "onClick" à ce DIV et c'est là que je patauge. Voilà ce que je tente de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cache = document.getElementById("toto"+tab[i]);
    cache.addEventListener("click", function () { clic("toto"+tab[i]); }, false);
    Et quand je regarde mon code source généré, mon DIV est correctement construit avec son ID et sa CLASSE, mais aucune trace d'un éventuel "onClick=clic("toto"+5)" par exemple.

    Quelqu'un peut-il m'expliquer la démarche d'insertion d'événement dans mon DIV svp ?

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    Ceci marche chez moi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	d=document.createElement("div");
    	d.id="toto1";
    	d.className="totoClass";
    	d.appendChild(document.createTextNode("Contenu de mon div"));
    	document.body.appendChild(d);
    	var cache = document.getElementById("toto1");
    	cache.addEventListener("click", function () { 
    		alert('hello');
    	}, false);

  3. #3
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Par défaut
    Ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cache.addEventListener("click", function () { clic("toto"+tab[i]); }, false);
    Je vois un problème de closure, la valeur de i correspond à celle en fin de boucle (tab.length). Pour remédier à cela, il suffit de passer par une IEF:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    cache.addEventListener("click", function (i) {  
        return function() {
            clic("toto"+tab[i]);
        } 
    }(i), false);

  4. #4
    Membre averti
    Homme Profil pro
    Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Par défaut
    Merci à vous deux. En effet, le problème était bien lié à la boucle.
    Ca fonctionne !

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

Discussions similaires

  1. [HTML-CSS][IE-FIREFOX] problème de height sur Firefox
    Par sanosuke85 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 04/03/2006, 17h31
  2. OnResize sur FIREFOX
    Par zobmac dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/11/2005, 14h37
  3. Pb xml+xslt sur firefox
    Par BenSept dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 08/11/2005, 17h29
  4. [CSS] Décalage sur FireFox pour le moins étrange ...
    Par prgasp77 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 26/10/2005, 19h56
  5. Regexp ok sur IE pas sur Firefox
    Par zebuman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/06/2005, 13h17

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