Скользящий ползунок — Использование индикаторов выполнения при инициализации с помощью цикла for?

#slider #splidejs

#ползунок #splidejs

Вопрос:

Я пытаюсь заставить работать индикаторы выполнения сплайда при инициализации ползунков с помощью цикла for, как показано ниже. Я не уверен в том, как все сделать правильно. Ползунки и индикаторы выполнения, похоже, нормально инициализируются, но затем только последний ползунок обновляет свой прогресс при перемещении. Есть какие-нибудь идеи от кого-то, кто имел дело со Сплайдом? Спасибо!

 var splides = document.querySelectorAll('.splide-slider');  if(splides.length){  for(var i=0; ilt;splides.length; i  ){  var splideElement = splides[i];  var splideId = splideElement;  var splideClassname = splideElement.classList[0];     var splideDefaultOptions =   {  lazyLoad: 'nearby',  preloadPages: 2,  autoWidth: true,  wheel: true,  arrows: true,  pagination: false,   waitForTransition: false,  perPage: 1,  }    var splide = new Splide( splideElement, splideDefaultOptions );    splide.on( 'mounted move', function () {  var getBar = '.'  splideClassname   ' .my-slider-progress-bar';  var bar = splide.root.querySelector(getBar);   var end = splide.Components.Controller.getEnd()   1;  bar.style.width = String( 100 * ( splide.index   1 ) / end )   '%';  } );    splide.mount();  } }  

и HTML:

 lt;div class="splide-slider"gt;  lt;div class="splide__track"gt;  lt;ul class="splide__list"gt;  lt;div class="splide__slide"gt;lt;/divgt;   lt;div class="splide__slide"gt;lt;/divgt;   lt;div class="splide__slide"gt;lt;/divgt;   lt;/ulgt;  lt;/divgt;  lt;div class="my-slider-progress"gt;  lt;div class="my-slider-progress-bar"gt;lt;/divgt;  lt;/divgt;  lt;/divgt; lt;div class="splide-slider"gt;  lt;div class="splide__track"gt;  lt;ul class="splide__list"gt;  lt;div class="splide__slide"gt;lt;/divgt;   lt;div class="splide__slide"gt;lt;/divgt;   lt;div class="splide__slide"gt;lt;/divgt;   lt;/ulgt;  lt;/divgt;  lt;div class="my-slider-progress"gt;  lt;div class="my-slider-progress-bar"gt;lt;/divgt;  lt;/divgt;  lt;/divgt;  

Ответ №1:

Итак, для всех, кто может оказаться в такой же ситуации, я пропустил вопрос о масштабах. Рабочим решением является:

 for (let i = 0; i lt; splides.length; i  ) {   funcs[i] = function() {  let splideElement = splides[i];  var splideClassname = splideElement.classList[0];     var splideDefaultOptions =   {  lazyLoad: 'nearby',  preloadPages: 2,  autoWidth: true,  wheel: true,  arrows: true,  pagination: false,   waitForTransition: false,  perPage: 1,  }    var splide = new Splide( splideElement, splideDefaultOptions );    splide.on( 'mounted move', function () {  var getBar = '.'  splideClassname   ' .my-slider-progress-bar';  var bar = splide.root.querySelector(getBar);   var end = splide.Components.Controller.getEnd()   1;  bar.style.width = String( 100 * ( splide.index   1 ) / end )   '%';  });    splide.mount();   }; } for (var j = 0; j lt; splides.length; j  ) {  funcs[j](); }