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

JS时分秒倒计时脚本无结果显示,求代码修正方案

修正后的时分秒倒计时器代码

先给出可运行的修正代码:

// 设置倒计时的目标结束时间(示例:今天23点59分59秒,可按需修改)
const targetTime = new Date();
targetTime.setHours(23, 59, 59, 0);

const $hours = document.getElementById('hours');
const $minutes = document.getElementById('minutes');
const $second = document.getElementById('second');

setInterval(() => {
  const now = new Date().getTime();
  // 确保剩余时间不为负数
  const remainingTime = Math.max(targetTime.getTime() - now, 0);
  updateClock(remainingTime);
}, 1000);

function updateClock(remainingTime) {
  // 从剩余毫秒数解析时分秒
  const hours = Math.floor((remainingTime % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  const minutes = Math.floor((remainingTime % (1000 * 60 * 60)) / (1000 * 60));
  const seconds = Math.floor((remainingTime % (1000 * 60)) / 1000);

  $hours.textContent = formatNumber(hours);
  $minutes.textContent = formatNumber(minutes);
  $second.textContent = formatNumber(seconds);
}

// 格式化数字,小于10时补前导0
function formatNumber(num) {
  return num < 10 ? `0${num}` : num.toString();
}

原代码的核心错误说明

  • 大小写错误:new date() 需改为 new Date(),JavaScript对大小写敏感
  • 目标时间逻辑错误:原代码仅取当前小时作为倒计时基准,完全不符合倒计时需求,需设置明确的结束时间点
  • 获取当前时间方式错误:new hours() 是无效代码,应使用 new Date().getTime() 获取当前时间戳(毫秒数)
  • 参数不匹配:updateclock 函数参数为removebgtime,但内部使用未定义的remainingtime,导致逻辑中断
  • 命名冲突:自定义Number函数覆盖了原生Number构造函数,会引发异常,需重命名为formatNumber
  • 时间计算逻辑混乱:原代码的时间差计算、时分秒解析公式错误,需基于剩余毫秒数正确推导时分秒

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:00:57