Javascript OR operator not working in if statement

后端 未结 6 1426
礼貌的吻别
礼貌的吻别 2020-12-11 23:38

I\'m trying to get this Javascript to do something if the day of the week matches any of the days listed in my statement, as well as restricting it to between 17:00 and 19:0

相关标签:
6条回答
  • 2020-12-12 00:15

    Correct it like this,

    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")
    }
    
    0 讨论(0)
  • 2020-12-12 00:16

    You need to use dayOfWeek but you can also limit the amount of checks you need to do....

    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
    }
    
    0 讨论(0)
  • 2020-12-12 00:25

    In this case, you better use a range check, because you need only two comparisons against of three or more - and it is better maintanable, just to change a value, if necessary.

    if (dayOfWeek >= 4 && dayOfWeek <= 6 && hour >= 17 && hour < 19) {
    

    The right OR conditions needs parenthesis, because of the precedence of && over ||

    if ((dayOfWeek == 4 || dayOfWeek == 5 || dayOfWeek == 6) && hour >= 17 && hour < 19 ) {
    
    0 讨论(0)
  • 2020-12-12 00:31

    Your if condition should be:

    if ( (dayOfWeek == 4 || dayOfWeek == 5 || dayOfWeek == 6) && hour >= 17 && hour < 19 ){
        // do stuff
      } else {
        // do other stuff 
    } 
    
    0 讨论(0)
  • 2020-12-12 00:35

    Just for the sake of posting another possibility, if you ever will have a dynamic input you may want to use an array and use indexOf to check whether the day exists in the list:

    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 
    }
    

    https://jsfiddle.net/hnzzfnot/1/

    0 讨论(0)
  • 2020-12-12 00:40

    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");
    }

    0 讨论(0)
提交回复
热议问题