好的,我有一个餐馆的网站。现在我在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;
我只是想让它实时打印,以便我可以看到它一旦正确点击它就会从打开变为关闭
答案 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)