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

记忆游戏暂停功能中clearInterval不生效问题排查求助

问题根因

你的秒表无法暂停、重置的核心原因是定时器被重复创建,旧定时器ID丢失无法清理:
你在cardClicked函数的最顶部无条件调用了start(),用户每点击一次卡片就会生成一个新的setInterval定时器,全局的timerInterval变量会被覆盖为最新的定时器ID。后续调用pause()或reset()时,只能清除最后一次创建的定时器,之前生成的所有定时器仍然在后台运行,持续更新计时数值,所以看起来暂停、重置功能失效了。

修复方案

按以下步骤修改代码即可解决问题:

  1. 新增全局变量标记定时器运行状态,避免重复启动
// 在原有的全局变量部分新增
let isTimerRunning = false;
  1. 修改start()函数,增加重复启动拦截逻辑,同时补全定时器间隔参数(原代码未显式指定,浏览器默认按10ms处理,显式声明兼容性更好)
function start() {
  // 定时器已经在运行时直接返回,不重复创建
  if (isTimerRunning) return;
  startTime = Date.now() - elapsedTime;
  timerInterval = setInterval(function printTime() {
    elapsedTime = Date.now() - startTime;
    print(timeToString(elapsedTime));
  }, 10);
  isTimerRunning = true;
}
  1. 同步修改pause()和reset()函数,更新运行状态标记
function pause() {
  clearInterval(timerInterval);
  isTimerRunning = false;
}

function reset() {
  clearInterval(timerInterval);
  print("00:00:00");
  elapsedTime = 0;
  isTimerRunning = false;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:18:00