как выделить только ту кнопку на которую кликнул

как выделить только ту кнопку на которую кликнул. Она выделятся но если кликну на другую кнопку то та должна сбросить класс active. То есть только одна кнопка должна иметь класс active

const buttons = document.querySelectorAll('button')
    
for(let i = 0; i < buttons.length; i++){
  buttons[i].onclick = function(){
    this.classList.add('active')
  }
}
button {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: green;
}
.active{
  background: red;
}
<main>
  <button>1</button>
  <button>2</button>
  <button>3</button>
  <button>4</button>
</main>


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

Автор решения: InDevX

Самое простое решение - при клике сперва убираем класс у всех button, а потом добавляем его нужной

const buttons = document.querySelectorAll('button')
    
for(let i = 0; i < buttons.length; i++){
  buttons[i].onclick = function(){
    [...buttons].forEach((el) => el.classList.remove('active')); //убираем класс
    this.classList.add('active')
  }
}
button {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: green;
}
.active{
  background: red;
}
<main>
  <button>1</button>
  <button>2</button>
  <button>3</button>
  <button>4</button>
</main>

→ Ссылка