Скорее всего, что JS-код у вас начинает выполняться до того, как элементы, с которыми он должен работать, были загружены в браузер. Варианты решения:
1. Подключать в конце страницы, где-нибудь перед закрывающим тегом < /body>
2. Дождаться загрузки DOM. В этом случае, можно подключать и в секции <head>
document.addEventListener("DOMContentLoaded", () => {
// ваш JS-код
});