Как выделить все элементы и удалить класс css

#javascript

#язык JavaScript

Вопрос:

У меня есть следующая функция JS, которая по щелчку мыши делает выбранный элемент выбранным(изменяет цвет фона) и должна заставить все остальные элементы удалить этот класс. Однако по какой-то причине при нажатии класс «категория меню-наведение» не удаляется.

 function GetData(allMenuItems, theCategoryId) {    // Remove selected class on other Elements  allMenuEl = document.querySelectorAll('menu-category');  for (var i = 0; i lt; allMenuEl; i  ) {  allMenuEl[i].classList.remove("menu-category-hover");  }   .....   // On element Click  var hoverEl = document.getElementById("menu_cat_"   theCategoryId);  hoverEl.classList.add("menu-category-hover"); }  lt;div class="menu-category menu-category-hover" onclick="GetData(, 13)" id="menu_cat_13"gt;  lt;img src="/images/85783_burger.png" class="menu-home-image-img"gt;  lt;p class="menu-home-name"gt;Burgerslt;/pgt; lt;divgt;  

Комментарии:

1. Разве так не должно быть document.querySelectorAll('.menu-category') ? (обратите внимание на точку).

2. Я забыл . длина в петле 🙁

3. Нет необходимости передавать theCategoryId , так как он уже находится внутри идентификатора элемента.

Ответ №1:

Проверьте это

 function GetData(allMenuItems, theCategoryId) {    // Remove selected class on other Elements   allMenuEl = document.querySelectorAll('.menu-category'); //lt;--- class indicator `.`  for (var i = 0; i lt; allMenuEl.length; i  ) { //lt;-- not added allMenuEl.length  allMenuEl[i].classList.remove("menu-category-hover");  }   .....   // On element Click  var hoverEl = document.getElementById("menu_cat_"   theCategoryId);  hoverEl.classList.add("menu-category-hover"); }