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

基于时段显示/隐藏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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:58:31