基于时段显示/隐藏Div的jQuery代码异常排查求助
问题分析与解决方案
你遇到的核心问题是直接比较时间字符串导致的逻辑错误——字符串是按字典序(字符逐个对比)来判断大小的,这和实际的时间顺序完全不符。举个例子:字符串 "09:00" 会被认为比 "10:00" 大,因为字符 "9" 的ASCII码比 "1" 高,这显然和时间逻辑相反,所以即使当前时间在8:29到16:29之间,你的判断条件也可能不成立,导致一直显示closeddiv。
正确的解决思路
把时间转换成总分钟数(小时×60 + 分钟),用数字来做比较,这样就能保证时间判断的准确性。
修改后的代码
$(document).ready(function () { var d = new Date(); // 将当前时间转换为总分钟数 var currentTotalMinutes = d.getHours() * 60 + d.getMinutes(); // 定义时段的总分钟数阈值 var openThreshold = 8 * 60 + 29; // 08:29对应的分钟数 var closeThreshold = 16 * 60 + 29; // 16:29对应的分钟数 if (currentTotalMinutes > openThreshold && currentTotalMinutes < closeThreshold) { $('.hours').show(); $('.closed').hide(); } else { $('.hours').hide(); $('.closed').show(); } });
额外测试建议
如果你想快速验证代码逻辑,可以手动设置一个测试时间来模拟:
// 替换当前时间的获取,手动设置为10:00(测试时段内) var d = new Date(); d.setHours(10); d.setMinutes(0);
这样就能直接看到代码是否正确切换显示状态了。
内容的提问来源于stack exchange,提问作者mickbale
相关产品推荐
相关产品推荐

