Ce code HTML ne marche pas, pourquoi ?

Bonjour, voici mon code, je débute. Chaque bouton devrait ouvrir leur contenu respectifs et pourtant seul le contenu 3 s'affiche, ça me rend dingue...

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Modale Vanilla</title>
    <link rel="stylesheet" href="style.css" />
    <link rel="preconnect" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
    <link
      href="https://fonts.googleapis.com/css2?family=Raleway%3Awght%40100%3B200%3B300%3B400%3B500%3B600%3B700%3B800%3B900&display=swap"
      rel="stylesheet"
    />
  </head>
  <body>

    <div class="modal-container">

      <div class="overlay modal-trigger"></div>
          
      <div id="modal1" class="modal" role="dialog" aria-labelledby="modalTitle1" aria-describedby="dialogDesc1">
        <button
        aria-label="close modal"
        class="close-modal modal-trigger">X</button>
        <h1 id="modalTitle1">Contenu 1</h1>
        <p id="dialogDesc1">Lorem ipsum dolor sit amet consectetur adipisicing elit. Ut nam exercitationem nihil veritatis sapiente quia.</p>
      </div>

      <div id="modal2" class="modal" role="dialog" aria-labelledby="modalTitle2" aria-describedby="dialogDesc2">
        <button
        aria-label="close modal"
        class="close-modal modal-trigger">X</button>
        <h1 id="modalTitle2">Contenu 2</h1>
        <p id="dialogDesc2">Lorem ipsum dolor sit amet consectetur adipisicing elit. Ut nam exercitationem nihil veritatis sapiente quia.</p>
      </div>

      <div id="modal3" class="modal" role="dialog" aria-labelledby="modalTitle3" aria-describedby="dialogDesc3">
        <button
        aria-label="close modal"
        class="close-modal modal-trigger">X</button>
        <h1 id="modalTitle3">Contenu 3</h1>
        <p id="dialogDesc3">Lorem ipsum dolor sit amet consectetur adipisicing elit. Ut nam exercitationem nihil veritatis sapiente quia.</p>
      </div>

    </div>

    <button id="modalBtn1" class="modal-btn modal-trigger" data-target="modal1">Open Modal 1</button>
    <button id="modalBtn2" class="modal-btn modal-trigger" data-target="modal2">Open Modal 2</button>
    <button id="modalBtn3" class="modal-btn modal-trigger" data-target="modal3">Open Modal 3</button>

    <script src="app.js"></script>
  </body>
</html>

3 réponses

  1. Modérateur

    Bonjour,

    Que contient ton fichier app.js  ?

    N'aurais tu pas des erreurs qui s'affichent dans la console de ton navigateur ?

    PS: Pour poster du code sur le forum, merci d'utiliser l'icone prévue à cet effet lorsque tu rédiges ton message...


    0
    1. Modérateur

      PS : je suppose que ton souci est lié à ton javascript et non à ton html.

      je déplace donc dans le forum javascript.

      0
    2. @jordane45

      Inclure le code JavaScript dans l'espace prévu à cet effet, réussi :) mais répondre sous ton commentaire ça sera pour la prochaine fois ahaha merci de ton aide

      0
  2. Merci de ta réponse :

    const modalContainer = document.querySelector(".modal-container");
    const modalTriggers = document.querySelectorAll(".modal-trigger");
    
    modalTriggers.forEach(trigger => trigger.addEventListener("click", toggleModal))
    
    function toggleModal(){
      modalContainer.classList.toggle("active")
    }
    
    0
    1. Modérateur

      Ton JS n'est pas bon.

      Tu ne lui dit pas quelle modale afficher..

      Essaye comme ceci:

       <div class="modal-container">
      
            <div class="overlay modal-trigger"></div>
                
            <div id="modal1" class="modal" role="dialog" aria-labelledby="modalTitle1" aria-describedby="dialogDesc1">
              <button
              aria-label="close modal"
              class="close-modal ">X</button>
              <h1 id="modalTitle1">Contenu 1</h1>
              <p id="dialogDesc1">Lorem ipsum dolor sit amet consectetur adipisicing elit. Ut nam exercitationem nihil veritatis sapiente quia.</p>
            </div>
      
            <div id="modal2" class="modal" role="dialog" aria-labelledby="modalTitle2" aria-describedby="dialogDesc2">
              <button
              aria-label="close modal"
              class="close-modal ">X</button>
              <h1 id="modalTitle2">Contenu 2</h1>
              <p id="dialogDesc2">Lorem ipsum dolor sit amet consectetur adipisicing elit. Ut nam exercitationem nihil veritatis sapiente quia.</p>
            </div>
      
            <div id="modal3" class="modal" role="dialog" aria-labelledby="modalTitle3" aria-describedby="dialogDesc3">
              <button
              aria-label="close modal"
              class="close-modal ">X</button>
              <h1 id="modalTitle3">Contenu 3</h1>
              <p id="dialogDesc3">Lorem ipsum dolor sit amet consectetur adipisicing elit. Ut nam exercitationem nihil veritatis sapiente quia.</p>
            </div>
      
          </div>
      
          <button id="modalBtn1" class="modal-btn modal-trigger" data-target="modal1">Open Modal 1</button>
          <button id="modalBtn2" class="modal-btn modal-trigger" data-target="modal2">Open Modal 2</button>
          <button id="modalBtn3" class="modal-btn modal-trigger" data-target="modal3">Open Modal 3</button>
      
       const modalTriggers = document.querySelectorAll(".modal-trigger");
          const closeMdls = document.querySelectorAll(".close-modal");
          
         
          modalTriggers.forEach(function(el){
            el.addEventListener("click", function(){
                 console.log("bouton cliqué",this); 
                 let target = this.dataset.target;
                 console.log("modal target",target);
                 let modalContainer = document.querySelector("#"+target);
                 removeActive(); // on enleve la class active sur toutes les modales
                 modalContainer.classList.add("active")
              });
            });
          
          closeMdls.forEach(function(btnclose){
            btnclose.addEventListener("click",function(){
              removeActive();
            });
          });
          
            function removeActive(){
            var modals = document.querySelectorAll(".modal");
              modals.forEach(function(div){
                 div.classList.remove("active");
              });
            }

      0