JavaScript中setInterval函数失效,简易数字时钟无法正常运行
数字时钟代码错误修复方案
你的代码存在两个关键错误,导致时钟无法正常运行:
Date对象使用错误
你直接将new Date()转换为字符串toLocaleTimeString(),而字符串没有getHours()、getMinutes()这类方法,这会直接导致代码执行报错,无法继续后续逻辑。正确的做法是先保留Date对象,再从对象上提取时分秒信息。变量拼写错误
判断秒数补零的条件里,变量名写成了seconods,正确的变量名应该是seconds,拼写错误会导致该逻辑失效,甚至引发报错。
下面是修正后的clock.js代码:
setInterval(function() { // 保留Date对象,不要直接转成字符串 var currentTime = new Date(); var hours = currentTime.getHours(); var minutes = currentTime.getMinutes(); var seconds = currentTime.getSeconds(); var period = "AM"; if (hours >= 12) { period = "PM"; } if (hours >= 13) { hours = hours - 12; } // 处理凌晨12点的显示逻辑 if (hours === 0) { hours = 12; } if (minutes <= 9) { minutes = "0" + minutes; } if (seconds <= 9) { seconds = "0" + seconds; } var clockTime = hours + ":" + minutes + ":" + seconds + " " + period; var clockElement = document.getElementById("clock"); clockElement.innerHTML = clockTime; }, 1000);
额外补充了凌晨12点的处理逻辑(此时getHours()返回0,转换成12来显示),让时钟显示更符合日常习惯。
内容的提问来源于stack exchange,提问作者ramank27
相关产品推荐
相关产品推荐

