@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
  • Вопрос задан
  • 77 просмотров
Пригласить эксперта
Ответы на вопрос 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()
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Александрия Москва
от 200 000 до 250 000 руб.
Foodtronics Москва
от 100 000 до 200 000 руб.
от 5 500 до 6 500 usd.
21 авг. 2019, в 00:43
500 руб./за проект
21 авг. 2019, в 00:14
1000 руб./за проект