求助:如何按指定星期时段显示div内容?需修改现有JS代码
实现按不同星期时段显示/隐藏Div的解决方案
嘿,我来帮你搞定这个按星期时段控制Div显示的需求!你的现有代码只判断了小时,没区分星期和精确到分钟的时段,咱们得把逻辑细化,适配你说的不同日期规则。
首先明确咱们要实现的规则:
- 周一至周四:10:00-22:30 显示目标内容
- 周五至周六:10:00-24:30(也就是次日00:30)显示目标内容
- 周日:11:00-21:30 显示目标内容
核心思路是把时间转换成当天的总分钟数来比较,这样能精确到分钟,避免只看小时的误差(比如22:31就应该隐藏周一到周四的内容)。同时要处理周五/周六的跨天时段,比如周六的24:00-00:30其实是周日的凌晨,这部分也属于周六的显示范围。
下面是修改后的完整代码:
function ShowOnTime(element) { var now = new Date(); var day = now.getDay(); // 注意:0=周日, 1=周一, 2=周二, ..., 6=周六 var currentMinutes = now.getHours() * 60 + now.getMinutes(); let startTime, endTime; // 根据星期设置对应时段的起止分钟数 if (day >= 1 && day <= 4) { // 周一至周四 startTime = 10 * 60; // 10:00 转换成分钟数 endTime = 22 * 60 + 30; // 22:30 转换成分钟数 } else if (day === 5 || day === 6) { // 周五至周六 startTime = 10 * 60; // 10:00 endTime = 24 * 60 + 30; // 24:30 即次日00:30 // 处理跨天情况:周日00:00-00:30属于周六的时段范围 if (day === 0 && currentMinutes <= 30) { startTime = 0; endTime = 30; } } else if (day === 0) { // 周日 startTime = 11 * 60; // 11:00 endTime = 21 * 60 + 30; // 21:30 } // 判断当前时间是否在时段内,控制元素显示/隐藏 if (currentMinutes >= startTime && currentMinutes <= endTime) { $(element).show(); } else { $(element).hide(); } } // 页面加载完成后立即执行一次,确保初始状态正确 $(document).ready(function() { ShowOnTime('#targetDiv'); // 替换成你的目标元素选择器,比如类名.target-content }); // 可选:每分钟自动更新一次,保证时间临界点自动切换状态 setInterval(function() { ShowOnTime('#targetDiv'); }, 60000);
关键细节说明:
- 用总分钟数比较:把小时和分钟转换成当天的总分钟数,比如10:00就是600分钟,22:30就是1350分钟,这样能精确判断到每分钟的边界
- 跨天时段处理:周五和周六的结束时间是24:30,对应次日的00:30,所以专门判断了周日凌晨00:00-00:30的情况,依然属于周六的显示时段
- 初始执行+定时更新:页面加载时立即执行一次,避免页面加载时状态错误;定时器每分钟更新一次,确保到点自动切换显示状态(不需要的话可以删掉定时器部分)
- 选择器替换:记得把
#targetDiv改成你实际要控制的元素选择器,比如如果是类名就写.your-class-name
内容的提问来源于stack exchange,提问作者Artur Rosa
相关产品推荐
相关产品推荐

