javascript - 暂停执行

标签 javascript php

我的页面上有一个计时器,当计时器到期时,它会提示警报框,现在的问题是,即使在按下警报框中的“确定”按钮后,它也会一次又一次地调用。其实我想把它重定向到另一个页面。 window.location=""; 可以工作,但它会进入负计时器。

HTML 代码:

<div>Registration closes in <span id="time">00:03</span> minutes</div>

JavaScript 代码:

<script   src="https://code.jquery.com/jquery-3.1.0.js"   integrity="sha256-slogkvB1K3VOkzAI8QITxV3VzpOnkeNVsKvtkYLMjfk="   crossorigin="anonymous"></script>  

    <script type="text/javascript">
        function startTimer(duration, display) {
    var timer = duration, minutes, seconds;
    setInterval(function () {
        minutes = parseInt(timer / 60, 10)
        seconds = parseInt(timer % 60, 10);

        minutes = minutes < 10 ? "0" + minutes : minutes;
        seconds = seconds < 10 ? "0" + seconds : seconds;

        display.text(minutes + ":" + seconds);

        if (--timer < 0) {
            alert("I am an alert box!");
            //window.location = "http://www.google.com";
        }
    }, 1000);
}

jQuery(function ($) {
    var fiveMinutes = 0.5 * 5,
        display = $('#time');
    startTimer(fiveMinutes, display);
});
    </script>

最佳答案

您必须保存间隔的引用,以便在需要时停止它。看看这个:

var interval;
function startTimer(duration, display) {
    var timer = duration, minutes, seconds;
    interval = setInterval(function () {
        minutes = parseInt(timer / 60, 10)
        seconds = parseInt(timer % 60, 10);

        minutes = minutes < 10 ? "0" + minutes : minutes;
        seconds = seconds < 10 ? "0" + seconds : seconds;

        display.text(minutes + ":" + seconds);

        if (--timer < 0) {
            alert("I am an alert box!");
            clearInterval(interval);
        }
    }, 1000);
}

$(function ($) {
    var fiveMinutes = 0.5 * 5,
        display = $('#time');
    startTimer(fiveMinutes, display);
});
 
<script src="https://code.jquery.com/jquery-3.1.0.js" integrity="sha256-slogkvB1K3VOkzAI8QITxV3VzpOnkeNVsKvtkYLMjfk=" crossorigin="anonymous"></script>  
<div id="time" />

但它更喜欢使用这个代码

setTimeout(function(){ startTimer(fiveMinutes, display); }, 1000);

然后进入startTimer函数,根据你的逻辑,再次调用setTimeout。

希望有帮助!

关于javascript - 暂停执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38916009/

相关文章:

javascript - 如何停止按钮上的页面重新加载单击jquery

javascript - 在不使用return或嵌套if的情况下以reject结束promise函数,这怎么可能?

java - 哪个是eclipse kepler最好的html/css/javascript/jquery文本编辑器插件?

javascript - Knockoutjs 映射 - 没有初始数据

javascript - 从 angularjs $http 调用 Slim Framework v3 api

php - mysql版本5.5.31加载数据infile语法错误

php - 为什么 Laravel 命令中的自定义构造函数会导致 "Invalid argument supplied for foreach"?

Php 将 ipv6 转换为数字

php - 检索模板 joomla 2.5 中的模块参数设置

PHP stdClass 对象内含数组