@1818

Как перезапустить JS при изменении размера окна без дублирования контента?

Имеется код JavaScript, который рассчитывает количество отображаемых элементов. Я добавил функцию resizeElement, потому что мне нужен перерасчет JS при изменении размеров окна. Однако с помощью этой функции содержимое дублируется, (чекните https://s.codepen.io/1818/debug/oKGvoP/DqkDdKxbxRGk при открытой F12 консоли, при изменении размера окна элементы <li> дублируются). Есть идеи как произвести расчет без дублирования контента?
Быдлокод:
function resizeElement() {
jQuery(document).ready(function() {
const root = document.documentElement;
const marqueeElementsDisplayed = getComputedStyle(root).getPropertyValue("--marquee-elements-displayed");
const marqueeContent = document.querySelector("ul.marquee-content");

root.style.setProperty("--marquee-elements", marqueeContent.children.length);

for(let i=0; i<marqueeElementsDisplayed; i++) {
  marqueeContent.appendChild(marqueeContent.children[i].cloneNode(true));
}});
}
window.addEventListener("resize", resizeElement);

resizeElement()

https://codepen.io/1818/pen/oKGvoP
  • Вопрос задан
  • 183 просмотра
Пригласить эксперта
Ответы на вопрос 1
hzzzzl
@hzzzzl
ээээ, так в скрипте же циклом по всем marqueeElementsDisplayed
marqueeContent.appendChild(marqueeContent.children[i].cloneNode(true));

поэтому каждый из них и клонируется и добавляется

function resizeElement() {
  jQuery(document).ready(function() {
   const root = document.documentElement;
   const marqueeElementsDisplayed = getComputedStyle(root).getPropertyValue("--marquee-elements-displayed");
   const marqueeContent = document.querySelector("ul.marquee-content");

   root.style.setProperty("--marquee-elements", marqueeContent.children.length);
/*
это нафиг
for(let i=0; i<marqueeElementsDisplayed; i++) {
  marqueeContent.appendChild(marqueeContent.children[i].cloneNode(true));
}
*/

  });
}

window.addEventListener("resize", resizeElement);
resizeElement()
Ответ написан
Ваш ответ на вопрос

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

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