Javascript 如何为此幻灯片添加播放/暂停按钮?
嗨,我正在尝试制作一个自动运行的幻灯片,用这段代码,它可以正常工作,但我需要在代码中添加一个播放/暂停按钮。有人愿意帮忙吗? 我还需要html/cssJavascript 如何为此幻灯片添加播放/暂停按钮?,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);
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
中使用0和1,并使用一个条件检查值=>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答案: