我想创建一个脚本,检查时间是工作日上午10点到晚上10点之间,周末上午10点到午夜之间。在它做到这一点后,我最终想要它,以便它将显示在一个网站上#34;我们是开放的(取决于它的工作日与否)"或者"我们在上午10点开始营业。如果他们关闭了。警报框是暂时的,而我试图弄明白这一点。这是我到目前为止所拥有的。
我已经编辑了CrakC指出的错误,我现在正尝试将文本添加到ID为#are; isWeOpen'
的div中也应该在头部或身体?应该在浏览器读取id之前调用它吗?
function checkIfOpen() {
var now = new Date();
var day = now.getDay();
var time = now.getHours();
var open, weekday, ;
var closed = "We will open at 10Am";
var openWeekday = "We are open till 10Pm";
var openWeekend = "We are open till midnight";
if (time >= 10) {
var open = true;
} else {
var open = false;
}
if (day >= 1 && day <= 4) {
var weekday = true;
} else {
var weekday = false;
}
if (open === true && weekday === true) {
document.getElementById('areWeOpen').innerHTML(openWeekday);
} else if (open === true && weekday === false) {
document.getElementById('areWeOpen').innerHTML(openWeekend);
} else {
document.getElementById('areWeOpen').innerHTML(closed);
}
};
checkIfOpen();
&#13;
答案 0 :(得分:2)
只需设置关闭时的默认值,然后根据检查更改这些值,即可保存多行代码。这也更具可读性和可维护性。
innerHTML
和textContent
是属性,而不是方法。这意味着您将内容分配给他们而不是尝试使用括号调用它们。但是,如果您只是插入文本,则应使用textContent
。
(function checkIfOpen() {
var now = new Date();
var day = now.getDay();
var hour = now.getHours();
var otime = 10;
var ctime = 24;
var msg = "we open at "+otime+"am";
var until = "midnight";
if (day >= 1 && day <= 4) ctime = 22, until = "10pm";
if (hour >= otime && hour <= ctime) msg = "we are open until " + until;
document.getElementById('areWeOpen').textContent = msg;
})();
<div id="areWeOpen"></div>
答案 1 :(得分:1)
这应该可以解决您的问题。你的代码中有很多错误 -
function checkIfOpen()
{
var now = new Date();
var day = now.getDay();
var time = now.getHours();
var open, weekday; //declaring variables here so that there are accessible outside the two 'if's
if (time >= 10) {
open = true;
} else {
open = false;
} //no semi-colon required here
if (day >= 1 && day <= 4) {
weekday = true;
} else {
weekday = false;
} //no semi-colon required here
if (open === true && weekday === true) //using === for comparision instead of ==
{
alert("we are open till 10pm");
}
else if (open === true && weekday === false) //using 'else if' instead of `if else`
{
alert("we are open till midnight"); //semi-colon required here
}
else
{
alert("we open at 10am");
}
}
答案 2 :(得分:0)
看起来你正在回答你自己的问题。对于时间争论,您应该考虑momentjs,因为它可以更容易地与时间一起工作。写入DOM jQuery始终是一个选项。如果您不想使用库,请尝试:
<div>Your message is <span id="message"></span></div>
<script>
var textNode = document.createTextNode('text')
document.getElementById('message').appendNode(textNode)
</script>
但是,如果可能的话,尽量不要在客户端JavaScript中执行此操作。如果您在服务器上呈现此信息,屏幕阅读器和搜索引擎将更容易访问。如果您正在编写静态HTML文件,那么上面的建议应该可以满足您的需求。