webl2m, я вижу два решения. Первое - добавь отсрочку перед выполнением скрипта. Я так понимаю DOM не успевает перерисоваться после втыкивания в него элементов через иннер хтмл, потому в Math.ceil(marqueeWidth / marqueeContentWidth) ты делил на ноль.
if(!marqueeContentWidth) {
setTimeout(()=>{
const duplicatedItems = Array.from(
{ length: itemsNeeded },
() => originalContent
).join('')
marqueeWrap.innerHTML = duplicatedItems
},100)
}
Второй вариант - удалить
window.addEventListener('resize', duplicateItems)
. В чем его назначение? И так при ресайзе будет нормальная прокрутка. Или я недопонял что-то?
И да - добавь
.marquee {
padding: 5px 0;
background-color: #000;
color: #fff;
overflow: hidden; /* вот это вот */
}
Еще можно промис написать который будет резолв если элемент отрисован.
Может есть и другие решения - я нашел такие топорные.