Lier un bouton à une action
Bonjour,
Je débute vraiment dans le développement et j'aurais besoin d'un conseil pour mon exercice.
Il s'agit d'un quizz contenant 3 questions dans 3 <div> différentes :
voici le HTML:
Code:
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 27 28 29
| <body>
<h1>Bienvenue sur le Quizz !</h1>
<div class="box ville">
<h4>Quelle est la capital de la Suisse:</h4>
<button class=btnVille1> Berne </button>
<button class=btnVille2> Genéve </button>
<p> La réponse est Berne</p>
</div>
<div class="box eat">
<h4>Quelle animal est indépendant:</h4>
<button class=btnEat1> Chat </button>
<button class=btnEat2> Chien </button>
<p> La réponse est chat</p>
</div>
<div class="box color">
<h4>Comment dire ROUGE en anglais:</h4>
<button class=btnColor1> red </button>
<button class=btnColor2> Blue </button>
<p> La réponse est Red</p>
</div> |
CSS:
Code:
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 27 28 29 30
| body{
background-color: beige;
}
h1{
background-color: white;
text-align:center;
color: brown
}
h4{
padding-top:10px;
padding-bottom: 10px;
width: 100%;
color:white;
}
.reponse{
visibility:hidden
}
.box{
text-align:center;
background-color:black;
}
p{
text-align:center;
color:white;
padding-bottom:10px;
visibility:hidden;
} |
JS:
Code:
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 27 28 29 30 31 32 33 34 35 36 37 38
| const reponse = document.querySelector ("p");
const btnVille = document.querySelector (".btnVille1");
const btnVille2 = document.querySelector (".btnVille2");
const btnEat = document.querySelector (".btnEat1");
const btnEat2 = document.querySelector (".btnEat2");
const btnColor = document.querySelector (".btnColor1");
const btnColor2 = document.querySelector (".btnColor2");
btnVille.addEventListener ("click", () => {
reponse.style.visibility = ("visible");
reponse.style.background = ("green");
});
btnVille2.addEventListener ("click", () => {
reponse.style.visibility = ("visible");
reponse.style.background = ("red");
});
btnEat.addEventListener ("click", () => {
reponse.style.visibility = ("visible");
reponse.style.background = ("green");
});
btnEat2.addEventListener ("click", () => {
reponse.style.visibility = ("visible");
reponse.style.background = ("red");
});
btnColor.addEventListener ("click", () => {
reponse.style.visibility = ("visible");
reponse.style.background = ("green");
});
btnColor2.addEventListener ("click", () => {
reponse.style.visibility = ("visible");
reponse.style.background = ("red");
}); |
Mon soucie étant que je n'arrive pas à relier les boutons des questions "eat" et "color" à leurs bouton respectif.
Chaque push sur les boutons active la réponse de la première box.
Pourquoi la balise <p> ne s'active que pour la première question?
J'ai essayé d'ajouter la classe de la box à la constante, mais le résultat est le même.
Et je suis certain qu'il y a un autre moyen plus court pour coder ce quizz sans passer par Trente "const" différente.
A votre disposition!
(Mauvais endroit du post désolé :? )
R.