2015-10-16 54 views
-3

嘿,我希望在零售商店的网站上显示一个指示符以便打开(非常像Yelp的指示符“立即打开”)。我已经想出了如何在每天的设定时间内完成它(例如下文)。如何在if else语句中声明两个条件

但是这家店周五的收盘时间不同&星期六,&星期天休息。我希望能找到一种方法来将这些变量也纳入这个等式中。

或考虑到这些变化,以使网站上的指标准确。

// JavaScript Document 
var today = new Date(); 
var dayNow = today.getDay(); 
var hourNow = today.getHours(); 
var shopStatus 


if (dayNow = 0) { 
    shopStatus = 'See you on Monday'; 
} 

// Regular Hours for Monday - Thursday 
// night time message 
else if (hourNow > 21) { 
     dayNow < 4 
     shopStatus = 'Open at 7am'; 
} 
// closed hours message 
else if (hourNow >18) { 
     dayNow < 5 
     shopStatus = '<p class="red">Closed Now</p>'; 
} 
// 6:30pm closing soon message 
else if (hourNow > 17.5) { 
     dayNow < 4 
     shopStatus = 'Closing soon'; 
} 
// Mon - Thurs. open hours message 
else if (hourNow > 7) { 
     dayNow < 4 
     shopStatus = 'Open Now'; 
} 
// 6:30am opening soon 
else if (hourNow > 6.5) { 
     dayNow < 4 
     shopStatus = 'Opening Soon'; 
} 
document.write('<p>' + shopStatus + '</p>'); 
+3

像'dayNow <4'这样的声明什么都不做。 – Pointy

+0

另外,我认为你正在寻找[&&'运营商](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators) – Pointy

+0

dayNow = 0只是设置dayNow为0 – djechlin

回答

1

对于AND,OR,您可以使用&&,||创建相当复杂的条件:

if (dayNow == 0) { 
    shopStatus = 'See you on Monday'; // Sunday - closed 
} 
else if (dayNow == 1) && 
    (hourNow > openingHour) && 
    (hourNow < closeToClose) { // Monday opening hours 
    shopStatus = 'message' ; 
// next tests... 

就我个人而言,我更喜欢另一种方法。用简单的商店状态索引创建数组。哦 - 它如何去...

var shopStatus = ["Open", "Closed", "Closing soon!"]; 

检查与简单的(不是那么简单)测试状态:

if (
    (dayNow < 6) && (dayNow > 1) // it's not Sun/Mon/Sat 
    && (hourNow < 17.5) && (hourNow > 7) 
    ) // and it's open, OR 
    || (
    (dayNow == 1) || (dayNow == 6) 
    ) { // it's Monday or Saturday 
    document.write('<p>' + shopStatus[0] + '</p>'); 
    // message is "Open" 
} 
else if // I think you are there 

写下尤其数组索引的每个状态的所有条件。如果需要,此解决方案非常干净并且很容易翻译。我建议评论所有条件以便于调试。请参阅MDN

0

如果需要多个条件,如果你要使用

& &为

或者

||为OR

如果(条件1 == 5 & &条件2> 12){}

请记住,当你比较的条件,你应该总是使用==而不是=

0

好的,所以我想通了,至少现在有效,我试着在我的电脑上切换时钟,在奇数天测试(星期五&星期六)。让我知道你的想法;但这在我使用它的网站上工作得很好。

var today = new Date(); 
var dayNow = today.getDay(); 
var hourNow = today.getHours(); 
var shopStatus 

/*dayNow determins if it is Friday, Saturday or Sunday */ 

if (dayNow == 0 || dayNow == 6 && hourNow > 16) { 
    shopStatus = '<p class="orange">See you on Monday'; // Sunday - closed 
} 
// night message 
else if (hourNow > 21 && dayNow < 5 && dayNow > 0) { 
     shopStatus = 'Open at 7am'; 
} 
// Late Friday night message 
else if (dayNow == 5 && hourNow > 21) { 
     shopStatus = '<p class="red">Open at 9am</p>'; 
} 
// insert right after closed message 
else if (dayNow == 5 && hourNow > 14) { 
     shopStatus = '<p class="red">Closed Now</p>'; 
} 
/*Regular Hours for Monday - Thursday 
closed hours */ 

else if (hourNow >18) { 
     shopStatus = '<p class="red">Closed Now</p>'; 
} 
// 6:30pm closing soon 
else if (hourNow > 17.5) { 
     shopStatus = 'Closing soon'; 
} 
// Mon - Thurs. open hours 
else if (hourNow > 7) { 
     shopStatus = 'Open Now'; 
} 
// 6:30am opening soon 
else if (hourNow > 6.5) { 
     shopStatus = 'Opening Soon'; 
} 

document.write('<p>' + shopStatus + ' *</p>');