Я думаю, что это может быть ваш setInterval вместо того, чтобы называть его так:
setInterval(functionname,2000);
попробуйте так:
setInterval(()=>{functionname()},2000);
это даст вам что-то вроде этого:
jsfiddle
также обязательно оберните весь свой код в прослушивателе domcontent событий:
document.addEventListener('DOMContentLoaded',()=>{ /*your javascript code*/ });
Это гарантирует, что ваши элементы html доступны, когда вы используете их в javascript