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

如何使用JavaScript在每分钟整点时自动刷新网页?

实现网页每小时整点自动刷新的方案

别客气~刚接触这类功能难免会有表述不清的地方,完全理解!我来帮你实现网页在每小时整点自动刷新的功能(你特意提到不是每60秒刷新一次,这点很关键,咱们要的是比如1:00、2:00这种整点钟点刷新,而不是每分钟都刷),还能和你现有的时钟代码完美结合起来。

核心思路

直接用固定1小时间隔的定时器容易因为浏览器后台休眠、定时器偏差等问题不准,更靠谱的方式是计算当前时间到下一个整点的精确毫秒差,然后用setTimeout触发刷新,每次刷新后再重新计算下一次的时间,确保精准性。

完整代码实现

先补全你现有的时钟代码(包含你提到的checkTime补零函数),再整合整点刷新逻辑:

// 补零函数,确保时间显示为两位数字(比如把5变成05)
function checkTime(i) {
  if (i < 10) {i = "0" + i};  
  return i;
}

// 你的时钟显示更新函数
function startTime() {
  var today = new Date();
  var h = today.getHours();
  var m = today.getMinutes();
  var s = today.getSeconds();
  m = checkTime(m);
  s = checkTime(s);
  h = checkTime(h);
  // 这里替换成你实际更新DOM的代码,比如更新页面上的时钟元素
  document.getElementById('clock').innerHTML = `${h}:${m}:${s}`;
}

// 计算下一个整点并设置刷新定时器
function setRefreshAtNextHour() {
  const now = new Date();
  // 构造下一个整点的时间对象:当前日期、小时+1,分/秒/毫秒都设为0
  const nextHour = new Date(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours() + 1, 0, 0, 0);
  // 计算当前到下一个整点的毫秒差
  const timeToRefresh = nextHour.getTime() - now.getTime();

  // 设置定时器,到点后刷新页面,同时重新设置下一次的刷新定时器
  setTimeout(() => {
    window.location.reload();
    setRefreshAtNextHour();
  }, timeToRefresh);
}

// 页面加载完成后初始化
window.onload = function() {
  // 启动时钟,每秒更新一次显示
  setInterval(startTime, 1000);
  // 初始化整点刷新定时器
  setRefreshAtNextHour();
}

关键细节说明

  • 精准性保障:每次刷新后都会重新计算下一个整点的时间,避免了固定间隔定时器长期运行后的偏差问题,哪怕页面在后台休眠过也能自动校准。
  • 测试小技巧:如果想快速验证功能,可以临时修改nextHour的构造逻辑,比如把now.getHours() + 1改成now.getHours(),分钟设为now.getMinutes() + 1,这样就能设置成1分钟后刷新,快速看到效果。
  • 和现有代码兼容:你的时钟代码可以直接保留,只需要把setRefreshAtNextHour函数和初始化逻辑加进去就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:31:37