必须用 setinterval 每秒调用 updatetime 函数获取 new date() 并格式化为“hh:mm:ss”,手动补零后写入 dom;需立即执行一次避免空白,确保元素存在且脚本在 dom 加载后运行。

用 setInterval 配合 new Date() 实时更新时间
直接写死时间没用,必须定时重新获取并写入 DOM。核心逻辑是:每秒调用一次函数,生成格式化后的时间字符串,再塞进页面某个元素的 textContent 或 innerHTML。
- 别用
setTimeout只执行一次——它不会自动重复 - 推荐用
setInterval(updateTime, 1000),但注意:1000ms 不等于精确 1 秒,浏览器节流或重绘延迟会导致轻微漂移(通常可接受) - 初始化时立即调用一次
updateTime(),避免首次显示空白或旧时间 - 时间格式化别依赖
Date.prototype.toLocaleTimeString()的默认行为——不同系统/语言环境输出差异大(比如有的带秒,有的不带,有的用 12 小时制)
格式化时间时要手动控制年月日、时分秒和补零
浏览器原生 toLocaleString() 看似省事,但线上环境不可控。更稳妥的是用 getHours()、getMinutes() 等方法取值,再用 String.prototype.padStart(2, '0') 补零。
-
new Date().getHours()返回 0–23 的整数,直接拼接会变成 “9:5:3” 而非 “09:05:03” - 不要用
date.toString().slice(16, 24)截取——这个位置在不同浏览器或时区下可能错位 - 如果只要时分秒,就别调用
getFullYear()等无关方法,减少计算开销(虽小但累积起来有影响)
把时间写进页面前,确认目标元素存在且可写
常见错误是脚本执行时 DOM 还没加载完,导致 document.getElementById('clock') 返回 null,后续赋值报错 Cannot set property 'textContent' of null。
- 把
<script></script>放在
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











