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

JS实现答题APP倒计时跳转功能时计时器无法停止问题求助

修复方案

问题根因

  • 属性名大小写错误:初始化倒计时数值的代码中,innerHTML被误写为innerHTMl(末尾L为小写),会导致初始赋值不生效。
  • 触发逻辑未放入定时器回调:倒计时结束的跳转判断没有放在setInterval的执行逻辑中,定时器每秒仅执行数值递减操作,永远无法触发跳转。
  • 取值格式不匹配:HTML元素内的初始值前后带有空白字符,且innerHTML返回值为字符串类型,直接与数字0做相等判断会因类型、空白字符问题匹配失败。
  • 缺少定时器清理逻辑:每次启动游戏/切换题目时如果重复创建定时器,会导致多个定时器并行,倒计时速度异常。

修复后代码

// 全局存储定时器ID,方便清理
let countDownTimer = null;

startGame = () => {
  // 清理已有定时器,避免并行运行
  if(countDownTimer) clearInterval(countDownTimer);
  // 修正innerHTML大小写错误
  document.getElementById("timer_sec").innerHTML = 10;
  questionCounter = 0;
  score = 0;
  availableQuesions1 = [...questions1];
  availableQuesions2 = [...questions2];
  availableQuesions3 = [...questions3];
  availableQuesions4 = [...questions4];

  countDownTimer = setInterval(
    () => {
      const timerDom = document.getElementById("timer_sec");
      // 去除空白后转数字再计算
      let currentSec = parseInt(timerDom.innerHTML.trim());
      currentSec--;
      timerDom.innerHTML = currentSec;
      // 倒计时归0时触发逻辑
      if(currentSec === 0) {
        clearInterval(countDownTimer);
        // 切换下一题,若需要切换后重新倒计时,可在getNewQuestion中重新启动定时器
        getNewQuestion();
      }
    },
    1000
  );
  getNewQuestion();
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:57:03