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

JS秒表重置后无法再次启动问题求助

秒表Reset后无法再次启动的修复方案

问题根源

你在resetCron()函数中直接用document.getElementById('watch').innerText='00:00:00';覆盖了整个watch容器的内容,这会把原本用来显示时分秒的三个<span>元素(minutes、seconds、hundredths)完全删除。后续点击Start启动秒表时,watchTime()函数无法找到这些span元素,自然无法更新时间,导致秒表看似无法启动。

修复方案

修改resetCron()函数,不要替换整个容器内容,而是分别重置每个span元素的文本值,和watchTime()的更新逻辑保持一致:

var hund = 0;
var sec = 0;
var min = 0;
var interval

function clockDigits(digit) {
  if (digit < 10) {
    return ('0' + digit)
  } else {
    return digit
  }
}

function startCron() {
  // 防止重复点击Start创建多个定时器
  if (!interval) {
    interval = setInterval(watchTime, 10);
  }
}

function pauseCron() {
  clearInterval(interval)
  // 重置变量,允许再次启动
  interval = null;
}

function resetCron() {
  clearInterval(interval);
  interval = null;
  hund = 0;
  sec = 0;
  min = 0;
  // 分别重置每个span的文本,保留原有DOM结构
  document.getElementById('hundredths').innerText = clockDigits(hund);
  document.getElementById('seconds').innerText = clockDigits(sec);
  document.getElementById('minutes').innerText = clockDigits(min);
}

function watchTime() {
  hund++;
  document.getElementById('hundredths').innerText = clockDigits(hund);
  if (hund == 100) {
    sec++;
    hund = 0;
    document.getElementById('seconds').innerText = clockDigits(sec);
  }
  if (sec == 60) {
    min++;
    sec = 0;
    document.getElementById('minutes').innerText = clockDigits(min);
  }
}

额外优化说明

  1. 在startCron()中添加了if (!interval)判断,避免重复点击Start按钮创建多个定时器,导致时间加速。
  2. 在pauseCron()和resetCron()中重置interval = null,确保再次点击Start时能正常创建新的定时器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:35:45