Javascript 无法停止滑块

Javascript 无法停止滑块,javascript,Javascript,努力打造最简单的画廊。有一个按钮可以打开图像播放。单击它将启动setInterval,但当再次按下时,需要将其停止。如何做到这一点 以下是指向沙箱的链接: 我的尝试: document.querySelector('.play-pause').addEventListener('click', function() { if(timer == null) clearInterval(timer); this.innerHTML = "Pause"; timer = s

努力打造最简单的画廊。有一个按钮可以打开图像
播放
。单击它将启动
setInterval
,但当再次按下时,需要将其停止。如何做到这一点

以下是指向沙箱的链接:

我的尝试:

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;
});
document.querySelector('.play pause').addEventListener('click',function(){
如果(计时器==null)清除间隔(计时器);
this.innerHTML=“暂停”;
计时器=设置间隔(函数(){
i=(i
问题在于
clearInterval
将interval对象作为参数,并将其清除。您将
timer
设置为null,因此您要求它清除
null
,这意味着它不会做任何事情

您需要使用其他变量来检查播放/暂停按钮的状态

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;
document.querySelector('.play pause').addEventListener('click',function(){
如果(播放===真){
this.innerHTML='Play';
清除间隔(计时器);
玩=假;
返回;
}
this.innerHTML=“暂停”;
计时器=设置间隔(函数(){
i=(i
}))


问题在于
clearInterval
将interval对象作为参数,并将其清除。您将
timer
设置为null,因此您要求它清除
null
,这意味着它不会做任何事情

您需要使用其他变量来检查播放/暂停按钮的状态

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;
document.querySelector('.play pause').addEventListener('click',function(){
如果(播放===真){
this.innerHTML='Play';
清除间隔(计时器);
玩=假;
返回;
}
this.innerHTML=“暂停”;
计时器=设置间隔(函数(){
i=(i
}))


问题在于
clearInterval
将interval对象作为参数,并将其清除。您将
timer
设置为null,因此您要求它清除
null
,这意味着它不会做任何事情

您需要使用其他变量来检查播放/暂停按钮的状态

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;
document.querySelector('.play pause').addEventListener('click',function(){
如果(播放===真){
this.innerHTML='Play';
清除间隔(计时器);
玩=假;
返回;
}
this.innerHTML=“暂停”;
计时器=设置间隔(函数(){
i=(i
}))


问题在于
clearInterval
将interval对象作为参数,并将其清除。您将
timer
设置为null,因此您要求它清除
null
,这意味着它不会做任何事情

您需要使用其他变量来检查播放/暂停按钮的状态

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;
document.querySelector('.play pause').addEventListener('click',function(){
如果(播放===真){
this.innerHTML='Play';
清除间隔(计时器);
玩=假;
返回;
}
this.innerHTML=“暂停”;
计时器=设置间隔(函数(){
i=(i
}))


您正在丢弃停止幻灯片放映所需的变量-此处为解决方案

也不要初始化计时器变量

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);
    }

});
document.querySelector('.play pause').addEventListener('click',function(){
中频(定时器){
清除间隔(计时器);
this.innerHTML=“播放”;
}
否则{
this.innerHTML=“暂停”;
计时器=设置间隔(函数(){
i=(i
您正在丢弃停止幻灯片放映所需的变量-此处为解决方案

也不要初始化计时器变量

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);
    }

});
document.querySelector('.play pause').addEventListener('click',function(){
中频(定时器){
清除间隔(计时器);
this.innerHTML=“播放”;
}
否则{
this.innerHTML=“暂停”;
计时器=设置间隔(函数(){
i=(i
您正在丢弃停止幻灯片放映所需的变量-此处为解决方案

也不要初始化计时器变量

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);
    }

});
document.querySelector('.play pause').addEventListener('click',function(){
中频(定时器){
清除间隔(计时器);
this.innerHTML=“播放”;
}
否则{
this.innerHTML=“暂停”;
计时器=设置间隔(函数(){
i=(i
您正在丢弃停止幻灯片放映所需的变量-此处为解决方案

也不要初始化计时器变量

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);
    }

});
document.querySelector('.play pause').addEventListener('click',function(){
中频(定时器){
清除间隔(计时器);
this.innerHTML=“播放”;
}
否则{
this.innerHTML=“暂停”;
计时器=设置间隔(函数(){
i=(i
可能重复的可能重复的可能重复的可能重复的可能重复的某物我不太理解你的决定。嘿Aleksandr,似乎对我有用。不管怎样,我更新了我的代码,以更紧密地反映您的风格,并在您的帖子中添加了一个可工作的JSFIDDLE旧提琴,就是我的帖子中的那个。我不太理解您的决定。嘿Aleksandr,似乎对我有用。无论哪种方式,我都更新了我的代码,以更紧密地反映您的风格和