I'm new to JS and trying to achieve same action of adding new class using Event Listener to HTML elements but it's only working for 1st element and none of other 4 is working.
What mistake am I doing here ?
DOM Selectors
let rating_1 = document.getElementsByClassName("user-rating__rating-number-1")[0];
let rating_2 = document.getElementsByClassName("user-rating__rating-number-2")[0];
let rating_3 = document.getElementsByClassName("user-rating__rating-number-3")[0];
let rating_4 = document.getElementsByClassName("user-rating__rating-number-4")[0];
let rating_5 = document.getElementsByClassName("user-rating__rating-number-5")[0];
Working
rating_1.addEventListener("click", () => {
rating_1.classList.add("user-rating__rating-number--orange");
});
Not Working
rating_2.addEventListener("click", () => {
//console.log(rating_2.innerText);
//alert("clicked 2");
rating_2.classList.add("user-rating__rating-number--orange");
});
EDIT :
- Culprit of this strange behavior is
let ratingArray = [rating_1, rating_2, rating_3, rating_4, rating_5];
When I do not use this array at all, I can click on each of the elements and assign new class to it; which is what I want to achieve.
I've commented out
removeClassFromElementsto avoid any confusion / distraction from main problemBut my question still remains unanswered why array of DOM selectors is not working as expected ? Why only 1st element of this array is able to accept new class name and not the others ?
I'm new to JavaScript coming from Java + Eclipse / IntelliJ world; it's so hard to debug issue with JS + VSCode ( any tips appreciated )