单击项目时,jquery pause / restart setTimeout

时间:2016-02-23 16:49:52

标签: jquery

我有以下Javascript功能。简单地说,它可以在两页之间交替显示"每10秒钟一次。

cs1.toggleDiv = function() 
    {
        var cs1timeout = setTimeout(function () 
            {
                $(".page1").hide();
                $(".page2").show();
                var cs1timeout = setTimeout(function () 
                    {
                        $(".page1").show();
                        $(".page2").hide();
                        cs1.toggleDiv();
                    }, 10000);
            }, 10000);
        console.log(cs1timeout);
    }

但我正在寻找一种在按下按钮时暂停此功能的方法。

类似于:

cs1.pauseToggleDiv = function()
    {
        $('#PauseDiv').on('click',function()
            {
                clearTimeout(cs1timeout);
                //RESTART THE TIMEOUT IF CLICKED AGAIN
            })
    }

我已经看到clearTimeout的某些内容,但无法看到如何应用它。

2016-02-24 12:42上面的代码更新以回应

2 个答案:

答案 0 :(得分:2)

setTimeout()函数返回一个ID。试试这个并检查你的控制台:

var myTimeoutId = setTimeout(function() {
    console.log('do stuff');
}, 1000);

console.log(myTimeoutId); // should output a number

现在,如果您将该ID传递给clearTimeout()函数,则会将其删除:

clearTimeout(myTimeoutId);
  

注意:为了能够使用clearTimeout()方法,您必须使用   创建超时方法时的全局变量:

这意味着您必须将 myTimeoutId 作为全局变量才能使此方法正常工作

另见why have to use global variable?

答案 1 :(得分:1)

您需要将超时函数保存在变量中才能使用window.clearTimeout(timeout)方法。

类似的东西:

var timer = setTimeout(function () {
    $(".page1").hide();
    $(".page2").show();
    setTimeout(function (){
        $(".page1").show();
        $(".page2").hide();
        cs1.toggleDiv();
    }, 10000);
}, 10000);

当你想要停止它时,你可以打电话 window.clearTimeout(timer);