应将 new date() 放入定时器回调内以获取实时时间,避免放在外层导致时间“卡住”;使用 tolocaletimestring() 自动适配本地格式;确保 dom 加载完成后再执行 js,推荐脚本置于 前或用 domcontentloaded;settimeout 递归对齐秒级起点比 setinterval 更精准。

直接用 JavaScript 更新 常见错误是把 这会导致显示的时间永远停在脚本加载那一刻。必须把 DOM 元素还没加载完就执行 JS,<span></span> 或 <div> 的 <code>textContent,别用 document.write() 或内联 onload——它要么只执行一次,要么破坏页面结构。为什么
new Date() 放在定时器外会“卡住”new Date() 写在 setInterval 外面,比如:const now = new Date(); // ❌ 只执行一次,时间不会变
setInterval(() => {
document.getElementById('time').textContent = now.toLocaleTimeString();
}, 1000);
new Date() 放进定时器回调里,每次触发都重新取值。
new Date() 获取实时对象toLocaleTimeString() 比手动拼接 getHours()/getMinutes() 更省心,且自动适配本地格式(含 12/24 小时制、秒数、AM/PM)toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'})
如何避免首次渲染空白或闪动
getElementById 会返回 null,后续更新直接报错:Cannot set property 'textContent' of null。











