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

如何实现点击切换RUN/RESET状态的25倒计时JS定时器?

实现可切换启动/重置的倒计时定时器

完全可以实现这种点击切换启动/重置的定时器!我来帮你完善代码,同时拆解核心逻辑:

首先先修正你现有HTML里的小问题:onclick属性里的函数调用需要加上括号,否则点击不会触发函数。接下来是完整的实现代码:

HTML 代码

<div id="result" onclick="playReset()">
  <p id="output"></p>
</div>

CSS 代码(补全你未写完的部分)

#result {
  background: pink;
  height: 200px;
  width: 200px;
  border-radius: 50%;
  margin-left: 400px;
  margin-top: 100px; /* 补个垂直间距,让布局更合理 */
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer; /* 加上指针样式,提示元素可点击 */
}

#output {
  font-size: 48px;
  font-weight: bold;
  color: #333;
  margin: 0;
}

JavaScript 代码

// 全局变量存储定时器ID和当前倒计时数值
let timerId = null;
let currentTime = 25;

// 页面加载完成后初始化显示
window.onload = function() {
  document.getElementById('output').textContent = currentTime;
};

function playReset() {
  const outputElement = document.getElementById('output');
  
  // 判断定时器是否正在运行
  if (timerId) {
    // 1. 停止定时器
    clearInterval(timerId);
    // 2. 重置倒计时数值为25
    currentTime = 25;
    // 3. 更新显示内容
    outputElement.textContent = currentTime;
    // 4. 标记定时器已停止
    timerId = null;
  } else {
    // 启动定时器,每秒执行一次倒计时逻辑
    timerId = setInterval(() => {
      currentTime--;
      outputElement.textContent = currentTime;
      
      // 当倒计时到0时,自动停止定时器
      if (currentTime === 0) {
        clearInterval(timerId);
        timerId = null;
      }
    }, 1000);
  }
}

核心逻辑说明

  • timerId变量:用来存储setInterval返回的定时器ID,这样我们才能在需要的时候用clearInterval精准停止它
  • 点击判断逻辑:每次点击时,先检查timerId是否存在:
    • 如果存在,说明定时器正在运行,此时执行重置操作:停止定时器、恢复数值为25、更新显示
    • 如果不存在,说明定时器未启动,此时开启倒计时,每秒减1,直到数值为0时自动停止
  • 初始显示:页面加载时就把倒计时数值显示为25,避免初始状态为空

这样就能实现你想要的:点击一次启动倒计时,再次点击重置回25并停止定时器的效果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:33:04