为了账号安全,请及时绑定邮箱和手机立即绑定

如何在进行倒计时时停止 jquery 事件

如何在进行倒计时时停止 jquery 事件

Qyouu 2023-02-24 17:09:40
我几乎不了解jquery。我正在尝试倒计时,所以在搜索后我找到了下面的代码。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.textContent = minutes + ":" + seconds;        if (--timer < 0) {                        timer = duration;        }    }, 1000);    }$('.start').on('click', function(){    var oneMinute = 60 * 1,        display = document.querySelector('#time');        startTimer(oneMinute, display);})但是倒计时会在一分钟后重复。就像 03、02、01 一样,它又从 59 开始。如何阻止它?我想在给定的分钟后提醒消息并停止计时器。
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

该setInterval函数返回一个标识符。将间隔 ID 存储在变量中。这允许您在需要时使用clearInterval()取消间隔。


function startTimer(duration, display) {

    var timer = duration, minutes, seconds;

    var 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.textContent = minutes + ":" + seconds;


        if (--timer < 0) {

            

            clearInterval(interval);

        }

        

    }, 1000);

    

}

$('.start').on('click', function(){

    var oneMinute = 5 * 1, // 5 Seconds for easy testing

        display = document.querySelector('#time');

        startTimer(oneMinute, display);

})

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<div id="time">

00:00

</div>


<button type="button" class="start">

START

</button>


查看完整回答
反对 回复 2023-02-24
?
冉冉说

TA贡献1877条经验 获得超1个赞

您需要存储间隔 ID 并用于clearInterval(intervalId);停止它。


function startTimer(duration, display) {

    var timer = duration, minutes, seconds;

    var intervalId = 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.textContent = minutes + ":" + seconds;


        if (--timer < 0) {

            clearInterval(intervalId);

        }

    }, 1000);

    

}


$('.start').on('click', function(){

    var oneMinute = 60 * 1,

        display = document.querySelector('#time');

        startTimer(oneMinute, display);

})


查看完整回答
反对 回复 2023-02-24
  • 2 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信