网页数字时钟开发报错:Uncaught ReferenceError: showtime is not defined
问题排查与解决
报错原因
Digital Clock.html:16 Uncaught ReferenceError: showtime is not defined
出现这个错误有两个核心问题:
- 脚本标签属性误用:你使用了
<script src="text/javascript">,但src属性是用来加载外部JS文件的,内联脚本应该使用type="text/javascript"(HTML5中可省略该属性,但绝对不能用src指向JS类型),这个错误导致浏览器无法解析你的内联函数代码。 - 函数定义不完整:
showtime()函数的结束大括号}被写在了<script>标签之外,导致函数没有被正确定义在全局作用域中,浏览器找不到这个函数。
修正后的完整代码
<!DOCTYPE html> <html> <head> <title>Digital Clock</title> </head> <body onload="showtime()"> <h1></h1> <script> function showtime(){ const d = new Date(); let h = d.getHours(); let m = d.getMinutes(); let s = d.getSeconds(); let session = "AM"; // 12小时制转换逻辑修正 if (h > 12) { h -= 12; } else if (h === 0) { h = 12; } session = h >= 12 ? "PM" : "AM"; // 补零处理 h = h < 10 ? `0${h}` : h; m = m < 10 ? `0${m}` : m; s = s < 10 ? `0${s}` : s; const time = `${h} : ${m} : ${s} : ${session}`; document.querySelector('h1').textContent = time; setTimeout(showtime, 1000); } </script> </body> </html>
额外优化说明
- 替换了
var为let/const,符合现代JS规范 - 简化了12小时制的逻辑判断,修正了原代码中午夜0点显示为
0:xx:xx AM的问题,改为12:xx:xx AM - 使用
document.querySelector替代getElementsByTagName,更简洁 - 使用模板字符串拼接时间,可读性更好
内容的提问来源于stack exchange,提问作者khodidas patel
相关产品推荐
相关产品推荐

