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

Bibliothèques & Frameworks Discussion :

Event.observe et création d'éléments [Prototype]


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut Event.observe et création d'éléments
    Bonjour à tous,

    Je suis face à un problème que je n'arrive pas à résoudre , c'est sans doute simple mais j'ai le nez dedans depuis tellement longtemps que je ne me sort pas

    J'ai dans un boucle besoin de construire X liens. Sur ces liens je dois appliquer un événement "click" :

    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
     
    for(var i=0;i<size;i++)
    {
    	var lien	= new Element('a',{href:'#'});
    	Event.observe(lien,'click',function(event){importer(i)});
    	lien.update(decodeURIComponent(data.files[i]));
    	msgbox.insert({bottom:lien});
    	msgbox.insert({bottom:new Element('br')});
    	msgbox.insert({bottom:new Element('br')});
    }
     
    function importer(id)
    {
     console.log(id);
    }
    Quand je vais cliquer sur les liens générer j'aurais en résultat la plus grande valeur de ma boucle pour chacun des liens.
    En gros à chaque fois que j'attache un événement il remplace les précédents.

    Comment puis je éviter cela ?

    merci
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    Salut,

    Il faut faire comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Event.observe(lien,'click',function(event, num){importer(num)}.bindAsEventListener(lien, i));

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    MErci pour cette réponse.
    J'avais entre temps résolu le problème avec une closure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    (function(){        
    var lien	= new Element('a',{href:'#'});
    	Event.observe(lien,'click',function(event){importer(i)});
    	lien.update(decodeURIComponent(i));
    	msgbox.insert({bottom:lien});
    	msgbox.insert({bottom:new Element('br')});
    	msgbox.insert({bottom:new Element('br')});
    })(i);
    Mais le bindAsEventListener est bien plus simple
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. event.observe ne fonctionne pas sous IE
    Par mikees dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/06/2007, 18h48
  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