mrEmpty
mrEmpty

Reputation: 841

JQuery/Javascript and the use of && operators

I'm trying to get a simple conditional statement to work, and running into problems. The failing code:

    $(document).ready(function(){
    var wwidth = $(window).width();

    if (wwidth < 321) {
        alert("I am 320 pixels wide, or less");
        window.scrollTo(0,0);
    } else if (wwidth > 321) && (wwidth < 481) {
        alert("I am between 320 and 480 pixels wide")
    }
});

If I remove the else if part of the code, I get the alert. If I try to use && or || operators it will fail. I've Googled, I can't find a reason why it's not working. I've also tried:

((wwidth > 321 && wwidth < 481))

along with other ways, just in case it's some odd syntax thing.

Any help would be greatly appreciated. Thanks :)

Upvotes: 9

Views: 84209

Answers (3)

ron tornambe
ron tornambe

Reputation: 10780

There are two issues. The first has already been answered, the second is "wwidth > 320" which should be "wwidth>=320". What if the window is larger than 480?

you can also implement "between" as follows:

Number.prototype.between = function(a, b) {
  return this >= a && this <= b
}

$(document).ready(function(){
    var wwidth = $(window).width();
    if (wwidth < 321) {
      alert("I am 320 pixels wide, or less");
      window.scrollTo(0,0);
    } else if (wwidth.between(321,481))
        alert("I am between 320 and 480 pixels wide")
    else alert("I am greater than 480 pixels wide.");  
}); 

Upvotes: 0

Jonny Burger
Jonny Burger

Reputation: 921

if (wwidth > 321 && wwidth < 481) {
//do something
}

Upvotes: 2

Mikey
Mikey

Reputation: 2951

((wwidth > 321) && (wwidth < 481))

This is the condition you need (http://jsfiddle.net/malet/wLrpt/).

I would also consider making your conditions clearer like so:

if (wwidth <= 320) {
    alert("I am 320 pixels wide, or less");
    window.scrollTo(0,0);
} else if ((wwidth > 320) && (wwidth <= 480)) {
    alert("I am between 320 and 480 pixels wide")
}

Upvotes: 20

Related Questions