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 :

creation dynamique de boutons, affectation d'évènements


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Par défaut creation dynamique de boutons, affectation d'évènements
    Hello, c'est encore moi je viens de passer une demi-journée sur ce problème

    En faisant de l'ajax

    Imaginons:

    Je génère plusieurs boutons lors d'une boucle :

    J'appel mon Div :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    place = Document.getElementById("blabla");
     
    for(i=0;i<5;i++)
     
    {
          bouton = Document.createElement("input");
          bouton.id = "bouton" + i;
          bouton.type = "button";
          bouton.value = "supprimer";
          enter = Document.createElement("br");
          place.appendChild(bouton);
          place.appendChild(enter);
    }
    Je n'ai trouvé aucun moyen de rendre autonome les boutons créés, j'ai même essayé avec des champs invisibles qui récupéraient en value l'id des boutons mais j'ai pas réussi a exploiter cette methode. Si quelqu'un a une idée.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 224
    Par défaut
    Bonjour,
    Je n'ai trouvé aucun moyen de rendre autonome les boutons créés,...
    oui mais encore

    on notera également que, sauf si Document est défini par ailleurs dans ton code, on utilise document avec un d minuscule.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Par défaut
    En fait il s'agit d'un code sorti en one-shot pas testé juste pour donner une idée de ce que je veux faire, oui pour le document en D minuscule, j'ai pas voulu donner tout mon code trop long, il s'agit d'un JS près de 7 megas bourré de fonctions et d'objets en tout genre. Moi ce que je voudrais, c'est que lorsque je clique sur l'un des boutons, que chaque bouton ait une valeur particulière qui me permettrai d'attribuer une fonction différente pour chaque bouton de façon dynamique bien sûr. Car en l'état les boutons générés sont des occurrences et ne sont pas vraiment indépendants.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 224
    Par défaut
    il te suffit de leurs affecter une fonction sur l'événement onclick

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    place = document.getElementById("blabla");
    for(i=0;i<5;i++){
      bouton = document.createElement("input");
      bouton.id = "bouton" + i;
      bouton.type = "button";
      bouton.value = "supprimer";
      bouton.onclick= function(){
          alert( this.id);
        };  
      enter = document.createElement("br");
      place.appendChild(bouton);
      place.appendChild(enter);
    }
    PS: je déplace sur javascript.

  5. #5
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    Tout d'abord, je vous conseille de passer par une variable intermédiaire pour la gestion de l'id sinon vous allez avoir tous vos boutons avec le même id, à savoir, la dernière valeur de i. Et, tant qu'à faire, de ne pas avoir un id uniquement numérique (ce n'est pas bon !) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var idBouton = i;
    button.id = "id" + idBouton;

  6. #6
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    J'oubliais.

    Pour le clic, vous pouvez ajouter cette instruction dans la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    button.onclick = function(){
       alert(this.id);
    }

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Par défaut
    Merci beaucoup, je suis en train de revoir mes essais en commentaire et je n'étais pas très loin en fait

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 224
    Par défaut
    Citation Envoyé par vermine Voir le message
    Bonjour,

    Tout d'abord, je vous conseille de passer par une variable intermédiaire pour la gestion de l'id sinon vous allez avoir tous vos boutons avec le même id, à savoir, la dernière valeur de i. Et, tant qu'à faire, de ne pas avoir un id uniquement numérique (ce n'est pas bon !) :
    sur ce coup il n'y a pas de problème de perte de la référence du i attendu qu'il est indirectement stocké dans l'ID de l'objet au "fil de l'eau".

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var i, oBtn, oBR, oDest = document.getElementById('destination');
    for( i=0; i<5; i++){
      oBtn = document.createElement('INPUT');
      oBtn.id = 'bouton_' + i;
      oBtn.type = 'button';
      oBtn.value = 'supprimer';
      oBtn.onclick= function(){
          alert( this.id);
        };
      oBR = document.createElement('BR');
      oDest.appendChild(oBtn);
      oDest.appendChild(oBR);
    }
    @arcade_stg_master :
    je te conseille de relire http://www.developpez.net/forums/d12...s/#post6644114
    Et aussi : cours et tutoriels Node.js :https://nodejs.developpez.com/cours/
    Node.js : le livre du débutant : https://nodejs.developpez.com/tutori...ivre-debutant/

Discussions similaires

  1. Affecter un évènement en mode dynamique.
    Par Laskar dans le forum Débuter
    Réponses: 7
    Dernier message: 07/10/2010, 18h40
  2. Réponses: 3
    Dernier message: 27/04/2009, 18h55
  3. creation dynamique d'un bouton
    Par ingeuls dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 06/04/2009, 10h52
  4. Réponses: 6
    Dernier message: 05/08/2008, 09h22
  5. Creation dynamique TADODataSet et association d'évènements
    Par yamino dans le forum Bases de données
    Réponses: 5
    Dernier message: 02/10/2007, 18h04

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