使用javascript实时打印“打开”或“关闭”,具体取决于时间

时间:2013-03-14 01:31:41

标签: javascript setinterval

好的,我有一个餐馆的网站。现在我在javascript中有一个简单的if语句,它根据一天中的时间将一段文本从打开变为“已关闭”。但是如果在关闭浏览器时在手机上,它在技术上仍然在后台打开。因此,如果您重新打开浏览器,它会说在应该说关闭的时间之后打开,直到您刷新页面。我想找到一种方法让它实时更新。我已经尝试使用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;

我只是想让它实时打印,以便我可以看到它一旦正确点击它就会从打开变为关闭

3 个答案:

答案 0 :(得分:3)

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毫秒更新一次。您可以根据自己的喜好将其更改为更快或更慢。

答案 1 :(得分: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();

答案 2 :(得分: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)