Javascript 如何为此幻灯片添加播放/暂停按钮?

Javascript 如何为此幻灯片添加播放/暂停按钮?,javascript,slideshow,slide,Javascript,Slideshow,Slide,嗨,我正在尝试制作一个自动运行的幻灯片,用这段代码,它可以正常工作,但我需要在代码中添加一个播放/暂停按钮。有人愿意帮忙吗? 我还需要html/css var indexDiaporama=1; afficherDiapo(indexDiaporama); function ajoutDiapo(n){ afficherDiapo(indexDiaporama+=n); } function diapoActuelle(n){ afficherDiapo(indexDiaporama=n);

嗨,我正在尝试制作一个自动运行的幻灯片,用这段代码,它可以正常工作,但我需要在代码中添加一个播放/暂停按钮。有人愿意帮忙吗? 我还需要html/css

var indexDiaporama=1;
afficherDiapo(indexDiaporama);

function ajoutDiapo(n){
afficherDiapo(indexDiaporama+=n);
}

function diapoActuelle(n){
afficherDiapo(indexDiaporama=n);
}

function afficherDiapo(n){

var i;
var slides=document.getElementByClassName("diapo");
var dots=document.getElementByClassName("dot");

if(n>slides.length){indexDiaporama=1;}

if(n<1){indexDiaporama=slides.length;}

for(i=0; i<slides.length; i++){

slides[i].style.display="none";
}

for(i=0; i<dots.length; i++){

dots[i].className=dots[i].className.replace("active", "");
}

slides[indexDiaporama-1].style.display="block";

dots[indexDiaporama-1].className+="active";
}

var timer = setInterval(function(){
indexDiaporama++;
afficherDiapo(indexDiaporama);
},3000);
var indexDiaporama=1;
贴附(indexDiaporama);
函数ajoutdipo(n){
粘贴(indexDiaporama+=n);
}
函数dipoacutelle(n){
粘贴(indexDiaporama=n);
}
函数afficherdipo(n){
var i;
var slides=document.getElementByClassName(“DIPO”);
var dots=document.getElementByClassName(“dot”);
如果(n>slides.length){indexDiaporama=1;}

如果(n首先设置一个变量,我们将它称为
pause
,为false,然后在
setTimeout()
中运行一个条件,检查它是否为false=>
如果(!暂停){//run code}

根据按下按钮时的状态处理暂停的变量==>
e.target

您创建了一个函数,当单击该函数时,该函数将传递一个
暂停/播放
按钮的事件目标。在该函数中,您可以检查
暂停/播放
按钮的值,您可以使用
数据集
来切换
0
1
/
打开
关闭
/
true
false
单击并更改
暂停
变量的值,因为该
数据集
在单击时设置为

在我的示例中,我在JS中的
数据id
属性=>
dataset.id
中使用01,并使用一个条件检查值=>
if(e.target.dataset.id=='0'){//set paused to true}否则{//set paused to false}
。在条件中,我还设置了按钮的文本内容和
数据集.id

然后,每次按下暂停按钮时,setInteral都会冻结,因为它正在寻找暂停,以便不将其设置为false=>
如果(!paused){//run code for setInterval}

下面是一个简单的JS setInterval,它每毫秒增加一个数字。我们可以使用上面描述的函数和事件侦听器暂停并播放它

const display=document.getElementById('display'))
const btn=document.querySelector('.btn')
让暂停=假;
设i=1;
函数checkBool(e){
如果(e.target.dataset.id=='0'){
e、 target.dataset.id='1'
btn.textContent='Play'
暂停=真;
}否则{
e、 target.dataset.id='0'
btn.textContent='暂停'
暂停=错误;
}
}
btn.addEventListener('click',checkBool)
常量计时器=设置间隔(函数(){

如果(!paused){//您是否使用CSS动画偶然运行此幻灯片放映?如果您使用setInterval,请查看此帖子:不,我没有使用CSS动画您需要某种机制来停止
setInterval
。您可以在此处阅读有关
clearInterval
的更多信息:。这里还有一个描述另一种解决方案的SO答案: