使用jQuery stop()

时间:2016-09-07 09:11:46

标签: javascript jquery

我有两个按钮。第一个让我们看到一个延迟3秒的警报和3秒钟后的另一个警报。第二个按钮必须能够暂停setTimeout功能。

因此,当第一个警报出现时,我点击“暂停”#39;第二个不应该出现。我知道我接近解决方案,但它仍然无法运作。我的代码是:

<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script>
        $(document).ready(function () {
            $("#start").click(function () {
                setTimeout(myFunction, 3000);
                setTimeout(myFunction, 6000);
            });
            $("#stop").click(function () {
                $("myFunction").stop();
            });
        });

        function myFunction() {
            alert('Hello');
        }
    </script>
</head>
<body>
    <p>
        <button id="start">Start</button>
        <button id="stop">Pause</button>
    </p>
</body>
</html>

2 个答案:

答案 0 :(得分:2)

要实现此目的,您需要存储对setTimeout()来电的引用,然后在需要时调用clearTimeout()。试试这个:

$(document).ready(function() {
    var timers = [];

    $("#start").click(function(){
        timers.push(setTimeout(myFunction, 3000));
        timers.push(setTimeout(myFunction, 6000));
    });

    $("#stop").click(function(){
        timers.forEach(function(timer) {
            clearTimeout(timer);
        });
    });
});

function myFunction() {
    console.log('Hello'); // note: use console.log to debug, especially with async/blocking functions
}

答案 1 :(得分:-1)

执行此操作的最佳方法是使用Cookie进行检查。

这就是我要这样做的方式:

1. Before starting alert check if there is a cookie named for example "some_cookie" and it's value;
2. When you click on "pause" it stores value "1" in to "some_cookie";
3. If value is "0" than run;

易。只是忙着给你写代码。如果您需要它,请告诉我。我会写。