système de notation étoiles : évènement sur previousElementSibling
Bonjour,
je fais encore appel à vos compétences, j'ai un système de notation avec des étoiles et une requête préparée qui fonctionne, j'ai du mal à construire la partie js et CSS et j'en suis au début. Je voudrais que quand on fait un mouseover sur une étoile les précédentes étoiles doivent aussi avoir la classe(ex. mousover sur la troisième étoile, la première deuxième et troisième deviennent rouges.
Mon code marche juste sur l'étoile que je pointe, pourtant j'ai essayé dans la console de remonter a l'élément parent de mon étoile puis aux enfants des éléments précédents du même niveau et il sélectionne bien le i précédent (le test je l'ai fais sans boucle avec star[3]...:
Code:
let previousStars = star.parentNode.previousElementSibling.childNodes;
Je pense que mon problème vient de la boucle while mais je trouve pas la solution :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| window.onload = () => {
//selectionner les etoiles
const stars = document.querySelectorAll(".stars button i");
//on boucle sur les etoiles pour ajouter un ecouteur d'evenement
for(let star of stars) {
star.addEventListener('mouseover', function() {
star.classList.add('hover');
//etoiles precedentes
let previousStars = star.parentNode.previousElementSibling.childNodes;
while(previousStars) {
previousStars.classList.add('hover');
previousStars = previousStars.parentNode.previousElementSibling.childNodes
}
});
}
} |
mon formulaire :
Code:
1 2 3 4 5 6 7 8 9
| <div class="stars">
<form action="" method="post">
<button name="btnValueNote" class="disabled" type="submit" value="1"><i class="bi bi-star"></i></button>
<button name="btnValueNote" class="disabled" type="submit" value="2"><i class="bi bi-star"></i></button>
<button name="btnValueNote" class="disabled" type="submit" value="3"><i class="bi bi-star"></i></button>
<button name="btnValueNote" class="disabled" type="submit" value="4"><i class="bi bi-star"></i></button>
<button name="btnValueNote" class="disabled" type="submit" value="5"><i class="bi bi-star"></i></button>
</form>
</div> |
merci pour votre aide.