它在if/else语句中运行良好,但是一旦使用switch语句,默认消息只显示,即使我的本地时间小于24(12am).一如既往地感谢您的帮助.
var today = new Date();
var timeNow = today.getHours()
var greeting = $("#greeting");
switch (timeNow) {
case timeNow > 17 : greeting = "Good Evening Welcome To My Website";
break;
case timeNow > 12 : greeting = "Good Afternoon Welcome To My Website";
break;
case timeNow > 6 : greeting = "Good Morning Welcome To My Website";
break;
default: greeting = "Welcome... but isn't it bed time now?";
}
$('#greeting').html('' + greeting + '');
Welcome!
你的switch
声明是试图的值进行比较,timeNow
对结果的timeNow > 17
和这样,这将是一个布尔值(true
或false
).当然,没有任何的匹配,因为没有Date
实例===
要么true
或false
.
你原来if/else if/else
可能是正确的方法.
但是,您可以switch
在JavaScript中使用它(与许多其他语言不同),因为case
值可以是表达式,并且它们以源代码顺序进行评估,只使用第一个匹配的值(除了default
,如果使用的话,总是使用最后一个没有其他人匹配).所以如果你改变了
switch (timeNow) {
至
switch (true) {
...然后将true
其与结果进行比较timeNow > 17
:
var today = new Date();
var timeNow = today.getHours()
var greeting = $("#greeting");
switch (true) { // <=== Change is here
case timeNow > 17 : greeting = "Good Evening Welcome To My Website";
break;
case timeNow > 12 : greeting = "Good Afternoon Welcome To My Website";
break;
case timeNow > 6 : greeting = "Good Morning Welcome To My Website";
break;
default: greeting = "Welcome... but isn't it bed time now?";
}
$('#greeting').html('' + greeting + '');
Welcome!