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 :

Afficher un élément et cacher les autres


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 61
    Points : 57
    Points
    57
    Par défaut Afficher un élément et cacher les autres
    Bonjour,

    Je travail sur un projet JS, j'ai un petit soucis, j'ai des boutons qui affichent du contenu, j'arrive à afficher et cacher un élément mais je n'arrive pas à cacher tous les autres.
    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
     
    let bouton1 = document.getElementById('button-1');
    let bouton2 = document.getElementById('button-2');
    let bouton3 = document.getElementById('button-3');
     
    let content1 = document.getElementById('content-1');
    let content2 = document.getElementById('content-2');
    let content3 = document.getElementById('content-3');
     
    let allContent = document.getElementsByClassName('content');
     
    function displayContent(bouton, content) {
      bouton.addEventListener('click', function(){
      if (content.style.display === "none") {
        content.style.display = "block";
     
      } else {
        content.style.display = "none";
      }
      });
    }
     
     
    displayContent(bouton1, content1);
    displayContent(bouton2, content2);
    displayContent(bouton3, content3);
    J'aimerai faire une fonction qui lorsque j'affiche un élément s'occupe de cacher les autres éléments de façon a ce qu'il y ait toujours un seul contenu d'afficher, es-ce-que vous auriez une idée de comment m'y prendre.
    Si vous avez besoin de plus d'info, n'hésitez pas.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Solution 1, basique, "à l'ancienne" :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <nav>
      <button type="button" class="button" onclick="displayContent(1);">bouton 1</button>
      <button type="button" class="button" onclick="displayContent(2);">bouton 2</button>
      <button type="button" class="button" onclick="displayContent(3);">bouton 3</button>
    </nav>
     
    <section>
      <div class="content" id="content-1">contenu 1</div>
      <div class="content" id="content-2">contenu 2</div>
      <div class="content" id="content-3">contentu 3</div>
    <section>
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .content { display:none; } /* on masque tout au départ */
    #content-1 { display:block; } /* on peut choisir d'afficher le 1er */
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function displayContent(num) {
      for (i = 1; i <= 3; i++) { // à modifier, si on veut ajouter des boutons/contents
        if (i == num) {
          document.getElementById("content-" + i).style.display = "block";
        } else {
          document.getElementById("content-" + i).style.display = "none";
        }
      }
    }

    Solution 2, plus "souple" (on peut ajouter des boutons/contents, sans changer le JavaScript) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <nav>
      <button type="button" class="button" data-num="1">bouton 1</button>
      <button type="button" class="button" data-num="2">bouton 2</button>
      <button type="button" class="button" data-num="3">bouton 3</button>
    </nav>
     
    <section>
      <div class="content" id="content-1">contenu 1</div>
      <div class="content" id="content-2">contenu 2</div>
      <div class="content" id="content-3">contenu 3</div>
    <section>
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .content { display:none; } /* on masque tout au départ */
    #content-1 { display:block; } /* on peut choisir d'afficher le 1er */
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    let boutons = document.querySelectorAll(".button");
    let contents = document.querySelectorAll(".content");
    boutons.forEach(function(bouton) {
      bouton.addEventListener("click", function() {
        let num = bouton.dataset.num;
        contents.forEach(function(content) {
          content.style.display = (content.id == "content-"+num)? "block" : "none";
        });
      });
    });
    Dernière modification par Invité ; 29/06/2018 à 10h00.

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

Discussions similaires

  1. [PHP 5.3] Code qui ne s'affiche pas chez moi, chez les autres si.
    Par koshie dans le forum Langage
    Réponses: 14
    Dernier message: 24/01/2011, 15h13
  2. afficher div et cacher les autres
    Par melodide dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/05/2010, 17h15
  3. [CSS 2] afficher un élément à côté de deux autres
    Par oceane751 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 11/02/2009, 19h53
  4. Afficher un div et cacher l'autre aprés Click
    Par fabien14 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/12/2008, 12h45
  5. Afficher un message sans bloquer les autres traitements??
    Par Ben_Le_Cool dans le forum Langage
    Réponses: 7
    Dernier message: 13/10/2005, 00h21

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