nie musisz podpinać listenera pod każdy przycisk, możesz zrobić to inaczej:
<ul id="days">
<li data-open-modal/>1 otwiera</li>
<li data-open-modal/>2 otwiera</li>
<li />3 nie otwiera</li>
<li data-open-modal/>4 otwiera</li>
</ul>
Dla elementów, które mają otwierać modala dodaję atrybut data-open-modal, i następnie zapinam listener click tylko na parencie:
const days = document.getElementById('days');
days.addEventListener('click', e => {
if (e.target.dataset.openModal !== undefined) {
alert(`modal otwarty z pola: ${e.target.textContent}`);
}
})
i w JS sprawdzam, czy kliknięty element posiada odpowiednie pole openModal nie będące undefined. Ja bym poszedł raczej w tę stronę, wtedy z poziomu templatki ustawiasz sobie latwo jakie pola mają być otwieralne, np. przy ich generowaniu, a listener zapięty na parencie po prostu sprawdza sobie parametry klikniętego pola.