@webl2m

Как решить ошибку Uncaught RangeError: Invalid array length при ресайзе?

  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 1
Kentavr16
@Kentavr16
long cold winter
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; /* вот это вот */
}

Еще можно промис написать который будет резолв если элемент отрисован.
Может есть и другие решения - я нашел такие топорные.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы