Где поставить setInterval и clearInterval

У меня есть рабочий слайдер. Я хотел бы автоматически воспроизводить слайды и останавливать автовоспроизведение, когда пользователь нажимает следующую или предыдущую кнопку.

Я попытался включить функцию setInterval, но я не уверен, как мне ее применить, чтобы она работала. Пока мне это сделать не удалось.

введите код сюда

var interleaveOffset = 0.2;

var swiperOptions = {
  loop: true,
  speed: 500,
  grabCursor: true,
  watchSlidesProgress: true,
  mousewheelControl: true,
  keyboardControl: true,
  navigation: {
    nextEl: ".swiper-button-next",
    prevEl: ".swiper-button-prev"
  },
  on: {
    progress: function() {
      var swiper = this;
      for (var i = 0; i < swiper.slides.length; i++) {
        var slideProgress = swiper.slides[i].progress;
        var innerOffset = swiper.width * interleaveOffset;
        var innerTranslate = slideProgress * innerOffset;
        swiper.slides[i].querySelector(".slide-inner").style.transform =
          "translate3d(" + innerTranslate + "px, 0, 0)";
      }      
    },
    touchStart: function() {
      var swiper = this;
      for (var i = 0; i < swiper.slides.length; i++) {
        swiper.slides[i].style.transition = "";
      }
    },
    setTransition: function(speed) {
      var swiper = this;
      for (var i = 0; i < swiper.slides.length; i++) {
        swiper.slides[i].style.transition = speed + "ms";
        swiper.slides[i].querySelector(".slide-inner").style.transition =
          speed + "ms";
      }
    }
  }
};

var swiper = new Swiper(".swiper-container", swiperOptions);

Я ожидаю, что слайдер автоматически воспроизводит слайды, и автовоспроизведение останавливается, когда пользователь нажимает кнопку «Далее» или «Предыдущая».

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
257
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте autoplay

autoplay: {
        delay: 2500,
        disableOnInteraction: true,
},

disableOnInteraction отключит автозапуск при нажатии на стрелки.

Спасибо за ваш ответ! Я попытался применить автозапуск в конце javaScript, но ничего не происходит. Есть ли какое-то конкретное место в коде, куда я должен его поместить? * Редактировать: на самом деле, когда я помещаю автозапуск в конец, кнопки больше не работают.

Tane 27.05.2019 10:30

Привет! Это оказалось самым близким правильным ответом. Мне просто нужно было применить autoplay: true; к параметрам swiper, и теперь это работает! Спасибо.

Tane 27.05.2019 10:40

С моей головы вы можете использовать что-то вроде этого


let timer = null

const startSwiping = () => {
 timer = setInterval(() => {
   swiper.slideNext(100); // transition duration (ms) as argument
 }, 500)
}

const stopSwiping = () => clearInterval(timer)


Я не пробовал, но документы Swiper не показывают никаких других вариантов, кроме swiper.slideNext(speed)

Я пробовал, но, к сожалению, автозапуск все еще не работает.

Tane 27.05.2019 10:36

Извините, замените setTimeout на setInterval и clearTimeout на clearInterval. Тайм-аут сработает только один раз. А если вам нужно начать играть, просто вызовите функцию startSwiping(). Когда хочешь остановиться, звони stopSwiping()

Verquido 27.05.2019 11:37

Другие вопросы по теме