尝试制作最简单的图库。有一个按钮可以转动图像<button class = "play-pause">Play</ button>
。点击它会启动setInterval
,但再次按下时需要停止它。怎么办呢?
以下是沙箱的链接:http://jsfiddle.net/eL31q3eq/
我的尝试:
document.querySelector('.play-pause').addEventListener('click', function() {
if(timer == null) clearInterval(timer);
this.innerHTML = "Pause";
timer = setInterval(function() {
i = (i < images.length - 1) ? ++i : 0;
img.src = images[i];
}, 1000);
timer = null;
});
答案 0 :(得分:2)
您正在丢弃停止播放幻灯片所需的变量 - 解决方案。
不要初始化你的计时器变量。
document.querySelector('.play-pause').addEventListener('click', function() {
if (timer) {
clearInterval(timer);
this.innerHTML = "Play";
}
else {
this.innerHTML = "Pause";
timer = setInterval(function() {
i = (i < images.length - 1) ? ++i : 0;
img.src = images[i];
}, 1000);
}
});
答案 1 :(得分:1)
问题是clearInterval
将interval对象作为参数,并清除它。您将timer
设置为空,因此您要求其清除null
,这意味着它不会做任何事情。
WindowTimer.clearInterval - MDN
您需要使用其他变量来检查播放/暂停按钮的状态。
document.querySelector('.play-pause').addEventListener('click', function() {
if(playing === true) {
this.innerHTML = 'Play';
clearInterval(timer);
playing = false;
return;
}
this.innerHTML = "Pause";
timer = setInterval(function() {
i = (i < images.length - 1) ? ++i : 0;
img.src = images[i];
}, 1000);
playing = true;
});