2

好的,我有一个餐厅网站。现在,我在 javascript 中有一个简单的 if 语句,它根据一天中的时间将一段文本从 Were open 更改为 Were Closed。但是,如果在手机上关闭浏览器时,它在技术上仍然在后台打开。因此,如果您重新打开浏览器,它会说在它应该关闭的时间之后打开,直到您刷新页面。我想找到一种方法让它实时更新。我曾尝试使用 setInterval 和 setTimeout 以及 while 循环来完成此操作,但到目前为止,什么都没有。我的意思是当我使用 setInterval 时,我可以打印时间并且它会实时增加。那么为什么它不能每秒运行我的 if 语句并打印所需的文本。

这是我的代码,到目前为止只显示它。

 var date = new Date().getHours();
 if ((date > 9) && (date < 20) && (day != 0)) {
        y="<span style=\"color:#07ed11\">We're Open!</span>";
    }
    else {
      y="<span style=\"color:#fc4b1c\">Sorry we're Closed.</span>"; 
    }
                    document.getElementById("open-close").innerHTML=y;

我只希望它实时打印我们的,这样一旦时间到了,我就可以看到它从打开变为关闭

4

3 回答 3

5

jsFiddle示例

新版本

我冒昧地回去修改这个。我觉得这个版本会更好用

var checkOpenStatus = function () {
    var d = new Date();
    var date = d.getHours();
    var day = d.getDay();
    if ((date > 9) && (date < 20) && (day != 0)) {
        y = "<span style=\"color:#07ed11\">We're Open!</span>";
    } else {
        y = "<span style=\"color:#fc4b1c\">Sorry we're Closed.</span>";
    }
    document.getElementById("open-close").innerHTML = y;
    setTimeout(checkOpenStatus,15000);
};

checkOpenStatus();

它每 15 秒运行一次,而不是每 100 毫秒运行一次。

旧版

尝试这个

var checkOpenStatus = function () {
    var d = new Date();
    var date = d.getHours();
    var day = d.getDay();
    if ((date > 9) && (date < 20) && (day != 0)) {
        y = "<span style=\"color:#07ed11\">We're Open!</span>";
    } else {
        y = "<span style=\"color:#fc4b1c\">Sorry we're Closed.</span>";
    }
    document.getElementById("open-close").innerHTML = y;
}
setInterval(checkOpenStatus,100); //removed anon function

100它每毫秒更新一次setInterval。您可以根据自己的喜好将其更改为更快或更慢。

于 2013-03-14T01:42:19.313 回答
1
  var checkOpenStatus =function () {
        var d = new Date();
        var date = d.getHours();
        var min = d.getMinutes();

  if ((date>7 || (date == 7 && min >= 30)) && (date < 22) && (day != 0)) {
           y = "<span style=\"color:#07ed11\">We're Open!</span>";
        } else {
           y = "<span style=\"color:#fc4b1c\">Sorry we're Closed.</span>";
        }
        document.getElementById("open-close").innerHTML = y;
    };
    checkOpenStatus();
于 2017-07-13T08:16:13.260 回答
0

侵入性较小的闭合样式:

var updateElement = function($el) {
    return function updater() {
        $el.text(new Date()); // dummy, your logic goes here...
        setTimeout(updater, 100);
    }
}

var fooUpdater = updateElement($("#foo")); 

setTimeout(fooUpdater,1000)
于 2013-03-14T01:48:37.090 回答