javascript - 我怎样才能让这个视差滑块自动滑动
问题描述
我有视差滑块。我希望它自动滑到结尾,然后滑到开头。我是 JavaScript 新手,尝试浪费了 2 个小时。
setInterval(changeSlide, 2000);
function changeSlide() {
var next, prev, slideCount, currentSlide, slideDirection;
next = document.getElementById('next-slide');
prev = document.getElementById('prev-slide');
slideCount = document.getElementById('slider-dots').childNodes.length;
currentSlide = 1;
slideDirection = 1;
if (slideDirection === 1) {
next.click();
currentSlide++;
if (currentSlide === slideCount) {
slideDirection = -1;
}
}
if (slideDirection === -1) {
prev.click();
currentSlide--;
if (currentSlide === 1) {
slideDirection = 1;
}
}
}
解决方案
你很接近,你需要做的就是纠正你的 if else 逻辑,也从函数中提取你的变量初始化。
顺便说一句,我想给你一个例子,它可以帮助你改进你的逻辑或重写它。
// INIT VARS BY YOUR LOGIC
let currentSlide = 1,
slidesLength = 10 // GET YOUR .slider-dots,
direction = 'up';
const animateSlide = (slideNumber, direction) => {
// HERE YOU COULD CALL YOUR SLIDER API/FUNCTION
// WHICH ANIMATES YOUR SLIDER, IT IS NOT NEEDED TO SIMULATE CLICK
// e.g direction === 'up' ? slider.next() : slider.prev() | slider.goTo(slideNumber)
// WHAT EVER IS YOUR SLIDER API
// YOU COULD PUT ALSO A LOGIC FOR clearInterval(slideInterval);
// IN ORDER TO DISABLE THE AUTOMATIC MODE
console.log(slideNumber, direction);
}
const changeSlide = () => {
if (currentSlide === slidesLength) {
direction = 'down';
} else if (currentSlide === 1) {
direction = 'up';
}
switch (direction) {
case 'up':
currentSlide += 1;
break;
case 'down':
currentSlide -= 1;
break;
default:
currentSlide = 1;
console.error('unknown direction');
}
animateSlide(currentSlide, direction);
}
const slideInterval = setInterval(changeSlide, 2000);
推荐阅读
- jquery - 使用 JQuery ajax 将默认 BindProperty 数据发布到 Razor 页面
- java - 如何使用 Java 将数据从 Oracle 数据库传输到 DB2
- c# - 如何在c#中直接打开钱箱
- angular - 如何在 Angular 4 三元运算符中附加标签?
- java - Java 构造函数中的最大参数数
- vbscript - 删除上次修订前的文件
- hyperledger - 可以在超级账本作曲家中的两个主机之间进行通信
- java - 我如何只能从 DTO 类中获取 addScalar 列?
- scala - 我可以让 json4s 的提取方法不区分大小写吗?
- php - 我是否错过了使此地理重定向代码起作用的任何内容?