【问题标题】:Turn Javascript SlideShow from intervals to array将 Javascript 幻灯片从间隔转换为数组
【发布时间】: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


【解决方案1】:

想到的一个策略:

var shares = [];

shareButton.addEventListener("click", function(){
    shares.push(currentSlide);
}

任何时候单击共享按钮,该幻灯片的索引都会添加到共享数组中。您可以稍后迭代共享数组。

要遍历这个数组,尝试类似

var len = shares.length;

for (i = 0; i < len; i++) {
    var photo = slides[i];
    // do something with the photo
} 

【讨论】:

  • 嗨@Naltroc,通过邮件推送它不会只发送数组的索引号吗? (即分享第一张幻灯片将通过电子邮件发送“0”)。我如何访问内容?
  • @user7366442,我不知道您通过邮件发送该项目的目的是什么,但您可能必须获取每张照片并一张一张地进行。我的答案已更新。
最近更新 更多