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

使用HTML和JavaScript实现门店营业状态按时间切换,现有代码运行异常求助

问题修正方案

原代码核心错误点

  • 时间变量仅在页面加载时初始化一次,定时任务执行时不会更新最新时间,判断逻辑永远基于页面打开时的时间
  • getDay()返回值规则错误:JS中getDay()返回0对应周日,1-6分别对应周一到周六,周五对应返回值为5,原代码中判断currentDay === 7完全不符合API规则
  • setInterval参数错误:传入openClose()会立即执行函数并将返回值(undefined)绑定给定时器,导致定时更新逻辑完全不生效,正确写法是传入函数引用openClose(无括号)
  • 显示状态逻辑不完整:仅设置了需要隐藏的元素,没有恢复需要展示的元素的显示状态,切换时间/日期时会出现两个元素都隐藏的异常
  • 业务逻辑不符合需求:原代码存在多余的周日特殊逻辑、工作日判断范围错误,没有按要求实现周五显示friday容器、其余工作日显示week容器的规则

修正后代码

JavaScript代码

function openClose() {
  // 每次执行都获取最新时间
  const currentDate = new Date();
  const currentDay = currentDate.getDay();
  const currentHour = currentDate.getHours();

  // 先获取所有DOM元素
  const fridayEl = document.getElementById('friday');
  const weekEl = document.getElementById('week');
  const openEl = document.getElementById('open');
  const closedEl = document.getElementById('closed');

  // 1. 处理工作日/周五显示逻辑
  if (currentDay === 5) { // 周五
    fridayEl.style.display = 'block';
    weekEl.style.display = 'none';
  } else if (currentDay >=1 && currentDay <=4) { // 周一到周四
    fridayEl.style.display = 'none';
    weekEl.style.display = 'block';
  } else { // 周六周日可按需求调整,这里默认隐藏两个时间提示容器
    fridayEl.style.display = 'none';
    weekEl.style.display = 'none';
  }

  // 2. 处理营业/歇业显示逻辑
  if (currentHour >=8 && currentHour < 18) { // 8点到18点前属于营业时间
    openEl.style.display = 'block';
    closedEl.style.display = 'none';
  } else {
    openEl.style.display = 'none';
    closedEl.style.display = 'block';
  }
}

// 页面加载立即执行一次
openClose();
// 每5秒更新一次状态,传入函数引用而非执行结果
setInterval(openClose, 5000);

HTML代码(无需修改,可按需调整营业时间文本)

<div ALIGN="center">
    <div style="color:red;font-size: 25px;" id="closed"> Closed</div>
    <div style="color:green;font-size: 25px;" id="open">Open.</div>
</div> 
<time> We are open every day of the week - 
    <div id="friday"> Friday - 8:00 AM to 6:00 PM</div> 
    <div id="week">8:00 AM to 6:00 PM</div> 
</time>

补充说明

如果需要精确到分钟判断营业时间(比如周五要18:30才关门),可以在判断时加入getMinutes()的逻辑即可。

内容的提问来源于stack exchange,提问作者Mekkaoui_Redouane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:36:05