Можно повесить слушатель на контейнер, в котором находятся все кнопки, и при клике проверять, имеет ли нажатый элемент класс кнопки, если имеет, то проводить над ним какие-нибудь действия. В примере кнопка меняет цвет и выводится модальное окно с текстом кнопки:
const buttons = document.querySelector('.buttons'); //Получаем контейнер кнопок
buttons.addEventListener('click', function(event) { //Вешаем обработчик на контейнер с кнопками
if (event.target.closest('button')) { //Если нажатый элемент оказался кнопкой, то продолжаем выполнение кода
const targetButton = event.target;
targetButton.classList.toggle('active') //Добавление или удаление класса при клике
alert(targetButton.textContent) //Вывод текста кнопки
}
})
.active {
background: #0f0;
}
<div class="buttons">
<button class="button">Кнопка 1</button>
<button class="button">Кнопка 2</button>
<button class="button">Кнопка 3</button>
<button class="button">Кнопка 4</button>
<button class="button">Кнопка 5</button>
</div>