【发布时间】:2026-01-09 07:05:02
【问题描述】:
我正在尝试在我现有的幻灯片放映中实现一个“共享”按钮,该按钮在一个“setInterval()”方法上运行,该方法将每 5 秒翻转一次图像。共享按钮的目的是让用户喜欢某个“幻灯片”,并能够单击共享按钮来发送他们正在查看的特定幻灯片。我首先担心的是,我认为无法判断单击了共享按钮的是哪张幻灯片(因为在整个“幻灯片放映”上使用了相同的按钮,因此很难判断单击了按钮的位置)。我相信最好的方法是让我的幻灯片在数组上工作(如果您不这么认为,请告诉我)。通过将其设为数组,我相信共享按钮可以更轻松地访问用户在幻灯片中所在的索引,并发送他们正在查看的某个索引。但是,总的来说,我对 Javascript 非常陌生,不知道如何将这个幻灯片转换为使用数组。我有以下代码操作间隔:
var slides = document.querySelectorAll('#slides .slide');
var allSlides = document.getElementById('slides');
var currentSlide = 0;
var slideInterval = setInterval(nextSlide,6000);
var playing = true;
//Controls
var pauseButton = document.getElementById('pause');
var backButton = document.getElementById('back');
var forwardButton = document.getElementById('forward');
var shareButton = document.getElementById('share');
//Share Modal
var shareModal = document.getElementById('shareModal');
var closeShare = document.getElementById('closeShare');
function nextSlide(){
if(playing){
slides[currentSlide].className = 'slide';
currentSlide = (currentSlide+1)%slides.length;
slides[currentSlide].className = 'slide showing';
clearInterval(slideInterval);
slideInterval = setInterval(nextSlide,6000);
} else{
slides[currentSlide].className = 'slide';
currentSlide = (currentSlide+1)%slides.length;
slides[currentSlide].className = 'slide showing';
pauseSlideshow();
};
}
function previousSlide(){
if(playing){
slides[currentSlide].className = 'slide';
currentSlide = (currentSlide-1)%slides.length;
slides[currentSlide].className = 'slide showing';
clearInterval(slideInterval);
slideInterval = setInterval(nextSlide,6000);
} else{
slides[currentSlide].className = 'slide';
currentSlide = (currentSlide-1)%slides.length;
slides[currentSlide].className = 'slide showing';
pauseSlideshow();
};
}
此代码会翻阅每张幻灯片,并且用户可以使用控件前进和后退。如果我想在其中实现一个数组,最好的方法是什么? (为了访问用户所在的幻灯片)非常感谢您的帮助。
【问题讨论】:
-
你认为
slides是什么,为什么它和currentSlide还不够?
标签: javascript html arrays setinterval intervals