clearInterval在特定情况下不起作用(javasripct,jquery)

clearInterval not working on a specific occasion (javasripct, jquery)

本文关键字:jquery javasripct 在特定情况下 不起作用 clearInterval      更新时间:2023-09-26

我遇到了一个问题,我在按下按钮时设置了一个间隔,并试图在再次按下按钮时将其清除。我还设置了它,以便在用户离开页面时设置间隔,当他回来时,间隔应该被清除。(我使用的是一个暂停插件,所以.pause()和.resume()是一回事)。这是javascript代码:

var check
var pauseactive
function pause() {
    $('.box').pause();
    $('#pauseimg').attr('src','buttonimg.png');
    $('#pause').attr('ID','resume');
    check=setInterval(pausecheck,10);
    pauseactive=1;
}
function resume() {
    $('.box').resume();
    $('#pauseimg').attr('src','pause.png');
    $('#resume').attr('ID','pause');
    window.clearInterval(check);
    pauseactive=0;
}
$(document).on('click','#pause',pause);
$(document).on('click','#resume',resume);
$(window).blur(pause); //this is also surrounded by $(document).ready()
$(window).focus(resume); //this is also surrounded by $(document).ready()

编辑(更好的解释):
当我单击#pause按钮时,它会执行它应该执行的操作。当我单击#resume按钮时,会正确地清除间隔
当我离开页面时,pause功能会正确激活,当我回来时,resume功能会正常工作并清除间隔
当我单击#pause按钮然后离开页面时,问题就出现了。在那之后,当我回来的时候,功能就不清楚了。这可能是因为它做了两次setInterval吗?

您是否混淆了pauseresume?Coz clearIntervalsetInterval的代码需要交换:

function pause() {
    $('.box').pause(); // Give the (); here.
    $('#pauseimg').attr('src','buttonimg.png');
    $('#pause').attr('ID','resume');
    window.clearInterval(check);
    pauseactive=1;
}
function resume() {
    $('.box').resume();
    $('#pauseimg').attr('src','pause.png');
    $('#resume').attr('ID','pause');
    check=setInterval(pausecheck,10);
    pauseactive=0;
}

你忘记调用函数了。相反,它只是指pause函数。这一点已经得到纠正。

因此,一旦调用了pause(),就应该清除该间隔。现在已经交换了。请检查。