Frontend Mentor - Interactive rating component solution by Emmanuel
Design comparison
Solution retrospective
After selecting a rating, I want to be able to remove it after selecting it again
Community feedback
- @EileenpkPosted almost 2 years ago
Hi Emmanuel! your project looks really good, I love how you used gsap for the animation, it was a really nice touch.
To be able to remove the active class if a rating is already selected add this code
ratingsContainer.addEventListener("click", (e) => { if (!e.target.matches(".rating")) return // Check if the clicked rating button already has the "active" class let alreadyActive = e.target.classList.contains("active") ratings.forEach((rating) => rating.classList.remove("active")) // If the clicked rating button was already active, remove the "active" class and return if (alreadyActive) return let selectedRating = e.target selectedRating.classList.add("active") let selectedRatingValue = selectedRating.textContent // Rest of the code... })
Also, consider moving the
button.addEventListener()
outside theratingsContainer.addEventListener()
to avoid creating a new event listener every time a rating is clicked.Hope you found this helpful!
- Let's connect on LinkedIn! - @Eileenpk
1 - @Emmanuel-XsPosted almost 2 years ago
Okay, let me try your solution out. I created the button
eventListener
inside the inputs to ensure the user clicks a rating before submitting without writing extra code. However, from what you said, it creates multiple click events for the button that may slow down the browser's overall speed. So, I will do as you say.Thank you very much I tried it and it worked. I really appreciated
0
Please log in to post a comment
Log in with GitHubJoin our Discord community
Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!
Join our Discord