请求完善营业状态脚本:添加闭店前15分钟提示功能
营业状态脚本优化:添加即将闭店提示
现有一套营业状态判断脚本,原本可根据时段显示「营业中」或「已闭店」,现在需要新增**闭店前15分钟显示「即将闭店」**的提示功能,以下是完善后的代码:
修改后的JavaScript代码
var statusEl = document.getElementById("telefon"); var now = new Date(); var dayOfWeek = now.getDay(); // 将时间转换为当日总分钟数,避免字符串拼接的精度问题 var currentMinutes = now.getHours() * 60 + now.getMinutes(); var workingHours = { 0: null, // 周日 1: [8*60+30, 16*60+30], // 周一:8:30-16:30 2: [8*60+30, 16*60+30], // 周二 3: [8*60+30, 18*60+30], // 周三:8:30-18:30 4: [8*60+30, 16*60+30], // 周四 5: [8*60+30, 16*60+30], // 周五 6: null // 周六 }; var todayHours = workingHours[dayOfWeek]; // 重置样式(避免多次运行样式叠加) statusEl.style.cssText = "font-weight:bold; padding:0 4px; border-radius:3px; margin-left:5px;"; if (!todayHours) { // 当日不营业 statusEl.innerHTML = "已闭店"; statusEl.style.backgroundColor = '#efd9df'; statusEl.style.color = '#c91f41'; } else { var openMinutes = todayHours[0]; var closeMinutes = todayHours[1]; var preCloseMinutes = closeMinutes - 15; // 闭店前15分钟的时间点 if (currentMinutes >= openMinutes && currentMinutes < preCloseMinutes) { // 正常营业中 statusEl.innerHTML = "营业中"; statusEl.style.backgroundColor = '#e2efd9'; statusEl.style.color = '#538135'; } else if (currentMinutes >= preCloseMinutes && currentMinutes < closeMinutes) { // 即将闭店(闭店前15分钟内) statusEl.innerHTML = "即将闭店"; statusEl.style.backgroundColor = '#fff3cd'; statusEl.style.color = '#856404'; } else { // 已闭店 statusEl.innerHTML = "已闭店"; statusEl.style.backgroundColor = '#efd9df'; statusEl.style.color = '#c91f41'; } }
HTML代码(无需修改)
<span id="telefon"></span>
关键修改说明
- 时间计算优化:把小时+分钟的字符串拼接改成总分钟数计算,彻底避免类似
16.5(16:05)和16.30(16:30)比较的逻辑错误 - 新增状态判断:加入闭店前15分钟的时间区间判断,单独设置「即将闭店」的文本和样式
- 样式简化:把重复的样式提取到重置语句里,减少冗余代码
内容的提问来源于stack exchange,提问作者userZolika
相关产品推荐
相关产品推荐

