Ce code HTML ne marche pas, pourquoi ?

zem1974 Messages postés 3 Date d'inscription samedi 27 janvier 2024 Statut Membre Dernière intervention 27 janvier 2024 - Modifié le 27 janv. 2024 à 21:49
jordane45 Messages postés 38264 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 31 octobre 2024 - 28 janv. 2024 à 00:03

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>

A voir également:

3 réponses

jordane45 Messages postés 38264 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 31 octobre 2024 4 694
27 janv. 2024 à 21:58

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
jordane45 Messages postés 38264 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 31 octobre 2024 4 694
27 janv. 2024 à 22:11

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

je déplace donc dans le forum javascript.

0
zem1974 Messages postés 3 Date d'inscription samedi 27 janvier 2024 Statut Membre Dernière intervention 27 janvier 2024 > jordane45 Messages postés 38264 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 31 octobre 2024
27 janv. 2024 à 23:11

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
zem1974 Messages postés 3 Date d'inscription samedi 27 janvier 2024 Statut Membre Dernière intervention 27 janvier 2024
27 janv. 2024 à 22:59

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
jordane45 Messages postés 38264 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 31 octobre 2024 4 694
28 janv. 2024 à 00:03

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