如果星期几与我的声明中列出的任何日期相匹配,并且将其限制在17:00到19:00之间,那么我试图让这个Javascript做某事,但是OR运算符没有像我预期的那样工作,我是JS的新手,我想知道我是否误解了这个运算符的使用。如果我要列出一周中一天的值,而不是像我的例子中那样列出3,那么代码就像我希望的那样工作。
var d = new Date();
var dayOfWeek = d.getDay(); // 0 = Sunday
var hour = d.getHours();
if ( dayOfWeek == 4 || 5 || 6 && hour >= 17 && hour < 19 ){
// do stuff
} else {
// do other stuff
}
答案 0 :(得分:5)
在这种情况下,您最好使用范围检查,因为您只需要对三个或更多进行两次比较 - 如果有必要,只需要更改一个值,这样就更好了。
if (dayOfWeek >= 4 && dayOfWeek <= 6 && hour >= 17 && hour < 19) {
正确的OR条件需要括号,因为&&
超过||
if ((dayOfWeek == 4 || dayOfWeek == 5 || dayOfWeek == 6) && hour >= 17 && hour < 19 ) {
答案 1 :(得分:3)
仅仅为了发布另一种可能性,如果你有动态输入,你可能想要使用array
并使用indexOf
来检查列表中是否存在这一天:
var d = new Date();
var dayOfWeek = d.getDay(); // 0 = Sunday
var hour = d.getHours();
if ( [4,5,6].indexOf(dayOfWeek) > -1 && hour >= 17 && hour < 19 ){
// do stuff
} else {
// do other stuff
}
答案 2 :(得分:2)
var d = new Date();
var dayOfWeek = d.getDay(); // 0 = Sunday
var hour = d.getHours();
if ( (dayOfWeek == 4 || dayOfWeek == 5 || dayOfWeek == 6) && (hour >= 17 && hour < 19) ){
// do stuff
console.log("true");
} else {
// do other stuff
console.log("false");
}
答案 3 :(得分:2)
你需要使用dayOfWeek
,但你也可以限制你需要做的检查......
var d = new Date();
var dayOfWeek = d.getDay(); // 0 = Sunday
var hour = d.getHours();
if ( (dayOfWeek >= 4 && dayOfWeek <= 6) && (hour>=17 && hour < 19))
{
// do stuff
}
else
{
// doo other stuff
}
答案 4 :(得分:1)
你的if条件应该是:
if ( (dayOfWeek == 4 || dayOfWeek == 5 || dayOfWeek == 6) && hour >= 17 && hour < 19 ){
// do stuff
} else {
// do other stuff
}
答案 5 :(得分:1)
像这样纠正,
var d = new Date();
var dayOfWeek = d.getDay(); // 0 = Sunday
var hour = d.getHours();
if ( (dayOfWeek == 4 || 5 || 6) && (hour >= 17 && hour < 19) ){
console.log("if")
} else {
console.log("else")
}