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

totsessie2stopt倒计时计时器放在setTimeout内部无法运行如何解决?

问题根因

倒计时失效的核心原因是 DOMContentLoaded 事件仅在页面初始DOM解析完成时触发一次。当你通过setTimeout延迟执行totsessie2stopt函数时,该事件已经触发完毕,此时再为它绑定tick监听函数,该函数永远不会被执行,倒计时自然不会启动。

解决方案

删除事件绑定代码,直接手动调用tick函数即可。因为setTimeout回调能正常执行修改test1内容的逻辑,说明此时DOM已经完全加载,不需要再等待DOMContentLoaded事件。

修正后的代码

setTimeout(function() {
  document.getElementById("test1").innerHTML = "This message will display at a given time on line 2!";

  // Begin countdown
  function totsessie2stopt() {
    (function() {
      var start = new Date;
      start.setHours(23, 30, 0); // 11pm

      function pad(num) {
        return ("0" + parseInt(num)).substr(-2);
      }

      function tick() {
        var now = new Date;
        if (now > start) { // too late, go to tomorrow
          start.setDate(start.getDate() + 1);
        }
        var remain = ((start - now) / 1000);
        var hh = pad((remain / 60 / 60) % 60);
        var mm = pad((remain / 60) % 60);
        var ss = pad(remain % 60);
        document.getElementById('time').innerHTML = " Still " + hh + " hours and " + mm + " minutes and " + ss + " seconds to go!";
        setTimeout(tick, 1000);
      }

      // 移除原有的DOMContentLoaded事件监听,直接调用tick
      tick();
    })();
  }
  totsessie2stopt();
  // End countdown
}, totsessie1);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 09:48:01