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 :

Ajouter un bouton à chaque div, ce bouton cachera la div à laquelle il appartient


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Ajouter un bouton à chaque div, ce bouton cachera la div à laquelle il appartient
    Bonjour, j'ai une boucle qui rajoute différent DIV à ma page principale.

    je souhaite ajoute à ces div un bouton qui cachera la div à laquelle il appartient
    pour ça je procède de la manière suivante.

    je rajoute un id à la Div en construction qui prend comme valeur l'indice de la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var unTweet = document.createElement('div');  
    unTweet.id = i;
    ensuite je rajoute un bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var bouton = document.createElement('input');
    		 bouton.type = "button";
    		 bouton.onclick = function(){cacherMessage(i);};
    et dans la fonction cacher message je cache la div

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    function cacherMessage(ind)
    {
    	alert(ind);
    	document.getElementById(ind).style.display = 'none';
    }

    seulement dés que i est changé c'est toutes les attributs onclick qui sont changé Oo. et donc à chaque fois c'est la div qui correspond à la dernière valeur de i qui est caché !
    Je ne vois pas pourquoi, quelqu'un pourrait m'aider ?

  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 : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

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

    Il te faut passer une copie de i dans ton gestionnaire d'évènement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    bouton.onclick = function(index) {
      return function() { cacherMessage(index); };
    }(i); // appelle la fonction englobante et lui passe i en paramètre, cette fonction retourne une fonction qui sera associée au onclick. la fonction interne a accès à index
    Etudie les fonctions anonymes et les closures pour comprendre ça.

    ++

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    pourquoi pas utiliser jQuery ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $(this).parent().hide();

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/10/2013, 20h15
  2. Ajout d'une image sur un bouton
    Par a_lincoln54 dans le forum C++
    Réponses: 3
    Dernier message: 05/06/2008, 15h37
  3. Scrolling Div et boutons
    Par mariedesmet dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 10/01/2008, 05h58
  4. faire apparaître un DIV avec bouton radio
    Par laurent2 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/07/2007, 15h00
  5. Ajout dans une liste avec un bouton
    Par Invité dans le forum Access
    Réponses: 6
    Dernier message: 07/12/2005, 08h27

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