Как добавить класс _active на все элементы списка при клике на ul?

Как добавить класс active на все элементы списка при клике на ul?(javascript)


Ответы (3 шт):

Автор решения: Иван Ипатов

Я бы сделал это так:

var li = document.getElementsByTagName('li')

function changestate() {
  for (let i = 0; i < li.length; i++) {
    li[i].classList.add('active')
  }
}
.active {
  color: blueviolet;
}
<ul onclick="changestate()">
  <li>Яблоко</li>
  <li>Банан</li>
  <li>Абрикос</li>
  <li>Мандарин</li>
  <li>Вопрос без кода на СО</li>
</ul>

→ Ссылка
Автор решения: Kosta B.

Как добавить класс active на все элементы списка при клике на ul?(javascript)

Попробуйте так.

// UL 
ul = document.querySelector('.click2tag');

// Event 
ul.addEventListener('click', function() {
  liTagMe = document.querySelectorAll('.tagMe')
  liTagMe.forEach((li) => li.classList.add('active'))
})
.active {
  color: orange
}

.tagMe {
  /*   Something goes here */
}
/** Clickability **/
.yes {
  color: green;
}

.no {
  color: red;
}
<p class="yes">Clickable</p>
<ul class="click2tag">
  <li class="tagMe">Something 1</li>
  <li class="tagMe">Something 2</li>
  <li class="tagMe">Something 3</li>
  <li class="tagMe">Something 4</li>
</ul>
<p class="no"> Not clickable</p>
<ul>
  <li>Other 1</li>
  <li>Other 2</li>
</ul>

→ Ссылка
Автор решения: De.Minov

Я, конечно же, не знаю зачем вам это, но предполагаю, что это лишь визуальное (CSS) оформление.
Если так, то я бы не стал насиловать устройство пользователя, переборами всех элементов списка при нажатие на один из них, сделал бы проще:

document.querySelector('ul').addEventListener('click', function(e) { // Вешаем обработчик на список UL
  if(e.target.tagName === 'LI') // Если нажатие на элемент LI
    this.classList.toggle('active'); // То вешаем родителю класс `.active`
})
/* 
  А в CSS уже визуализируем LI элементы "активного" UL
*/

ul.active > li {
  color: green;
}
<ul>
  <li>List 1</li>
  <li>List 2</li>
  <li>List 3</li>
  <li>List 4</li>
  <li>List 5</li>
</ul>

→ Ссылка