@E_Melqonyan

Как написать это с одним циклом?

const elem = document.querySelectorAll('.box');

for (let i = 0; i < elem.length; i++) {
  elem[i].addEventListener('click', function () {
    for (let x = 0; x < elem.length; x++) {
      elem[x].style.background = 'black';
    }

    elem[i].style.background = 'red';
  })
}
  • Вопрос задан
  • 384 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Вместо назначения индивидуальных обработчиков каждому элементу сделать один делегированный:

document.addEventListener('click', ({ target: t }) => {
  if (t.classList.contains('box')) {
    for (const n of document.querySelectorAll('.box')) {
      n.style.background = n === t ? 'red' : 'black';
    }
  }
});
Ответ написан
twobomb
@twobomb
.box{
  background:black;
}
.box.active{
  background:red;
}

const elem = document.querySelectorAll('.box');

for (let i = 0; i < elem.length; i++) 
  elem[i].addEventListener('click', function (evt) {
    var el = document.querySelector('.box.active');
    if(el)
    	el.classList.remove("active");
     evt.target.classList.add("active");
  });
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы