动态显示实时时间需用 setinterval 每秒调用 updateclock 函数,首次手动执行避免空白;优先用 textcontent 更新文本,缓存 dom 元素,指定 tolocaletimestring 参数确保格式与时区一致,移动端需注意节流影响。

直接写死 <p>当前时间:2026-08-27</p> 就不会动——HTML 本身没有时间刷新能力,必须靠 JavaScript 每次重新读取并更新 DOM。
只执行一次 new Date(),没用 setInterval
常见错误是把 new Date() 写在脚本里就完了,比如:
const now = new Date();
document.getElementById('clock').textContent = now.toLocaleTimeString();
这只会取页面加载那一刻的时间,之后永远不变。动态显示的前提是「持续获取+持续更新」。
- 必须用
setInterval(updateClock, 1000)每秒调用一次更新函数 - 别用
setTimeout递归调用,容易因执行延迟导致跳秒或堆积 - 首次调用建议手动执行一次
updateClock(),避免首屏空白
用 innerHTML 覆盖整个容器或 document.write
写成 element.innerHTML = '14:23:05' 看似能用,但有风险;而 document.write() 已过时,会在页面加载完成后清空整个文档。
- 纯文本更新优先用
textContent:更快、不触发 HTML 解析、防 XSS - 如果目标元素里还有其他子节点(比如图标、单位文字),
innerHTML =会把它们全删掉 - 确保目标元素有明确
id或class,别靠模糊选择器误改其他内容
toLocaleTimeString() 格式不一致或时区错乱
toLocaleTimeString() 在不同系统、浏览器下输出差异大:Windows 中文版可能出“上午10:23”,macOS 可能默认 12 小时制,Safari 对 timeZone 选项支持弱。
- 要稳定显示 “14:23:05”,加参数:
toLocaleTimeString('zh-CN', { hour12: false }) - 想固定显示北京时间(东八区),得显式指定:
{ timeZone: 'Asia/Shanghai' },但 IE 不支持,需降级兜底 - 真要完全可控,建议手动拼接:
`${date.getFullYear()}-${String(date.getMonth()+1).padStart(2,'0')}`,月份、日期、时分秒都补零 -
datetime属性(如用在<time></time>标签里)必须是 ISO 8601 格式,比如toISOString()输出的"2026-08-27T06:36:00.000Z",不能填中文或空格
DOM 查询没缓存,定时器里反复 getElementById
把 document.getElementById('clock') 写在 setInterval 回调里,每次执行都重新查 DOM,低效且易出错(比如元素还没加载完就查,返回 null)。
- 提前缓存:
const clockEl = document.getElementById('clock');,再在定时器里直接用clockEl.textContent - 确保脚本在对应 DOM 元素之后执行:放在
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











