Ce code HTML ne marche pas, pourquoi ?
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
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>
- Ce code HTML ne marche pas, pourquoi ?
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Editeur html - Télécharger - HTML
3 réponses
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...
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") }
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"); }); }
PS : je suppose que ton souci est lié à ton javascript et non à ton html.
je déplace donc dans le forum javascript.
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