You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让JavaScript倒计时计时器停在0:00?

解决倒计时计时器无法停在0:00的问题

你的计时器停不下来的核心问题有两个:

  • setInterval会持续触发,即使触发结束条件,return只是退出当前一次函数调用,定时器本身还在运行,导致后续继续执行倒计时逻辑,出现负数时间。
  • 判断结束的时机不对:你先更新了DOM、让time--之后才检查是否到0,这时候当time为0时,显示完0:00后time已经变成-1,下一次执行就会算出负数的分钟数。

修改方案如下,关键是保存定时器ID并在结束时清除,同时调整判断逻辑的顺序:

function getTime(){
    const startingMinutes=prompt("How many minutes is your timer?");
    let time=startingMinutes*60;
    const countdownEl=document.getElementById("countdown");

    // 保存定时器ID,用于后续清除
    const timerInterval = setInterval(updateCountdown, 1000);

    function updateCountdown(){
        // 先判断是否已经倒计时结束
        if (time <= 0) {
            // 停止定时器
            clearInterval(timerInterval);
            // 固定显示0:00
            countdownEl.innerHTML = "0:00";
            // 播放提示音
            document.getElementById('timesUp').play();
            return;
        }

        const minutes=Math.floor(time/60);
        let seconds= time % 60;
        seconds=seconds<10 ? '0' + seconds : seconds;

        countdownEl.innerHTML= `${minutes}:${seconds}`;
        time--;
    }
}

修改说明:

  • 用timerInterval变量保存setInterval的返回值,这样可以在结束时用clearInterval(timerInterval)彻底停止定时器。
  • 把结束判断放在最前面:当time小于等于0时,直接停止定时器,固定显示0:00,播放提示音后退出函数,不再执行后续的倒计时逻辑。
  • 移除了没用的overMin和overSec变量,因为代码里没用到它们。

内容的提问来源于stack exchange,提问作者DaisyCake 110

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 03:10:16