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

网页数字时钟开发报错:Uncaught ReferenceError: showtime is not defined

问题排查与解决

报错原因

Digital Clock.html:16 Uncaught ReferenceError: showtime is not defined

出现这个错误有两个核心问题:

  1. 脚本标签属性误用:你使用了<script src="text/javascript">,但src属性是用来加载外部JS文件的,内联脚本应该使用type="text/javascript"(HTML5中可省略该属性,但绝对不能用src指向JS类型),这个错误导致浏览器无法解析你的内联函数代码。
  2. 函数定义不完整: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:45:51