2012-04-21 44 views
9

我试图让一个简单的条件语句工作,并遇到问题。失败代码:JQuery/Javascript和使用&&运营商

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

如果我删除else,如果代码的一部分,我会得到警报。如果我尝试使用& &或||运营商将失败。我谷歌搜索,我无法找到它不工作的原因。我也试过:

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

以及其他方式,以防万一它是一些奇怪的语法的事情。

任何帮助将不胜感激。谢谢:)

+1

那里有你的逻辑差距。如果窗户的宽度恰好是321? – 2012-04-21 17:07:18

+0

如果发生这种情况,世界就会结束,所以没关系;) – mrEmpty 2012-04-21 17:15:58

+0

你确定你的窗口小于480px?否则,即使使用正确的语法(在答案中指出了很好的选择),您也不会看到任何提醒。 – Cameron 2012-04-21 17:17:26

回答

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

这是您需要的条件(http://jsfiddle.net/malet/wLrpt/)。

我还要考虑对你的条件,像这样清晰的:

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") 
} 
+0

非常好,谢谢。这是一种享受。 – mrEmpty 2012-04-21 17:19:05

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

有两个问题。第一个已经被回答,第二个是“wwidth> 320”,应该是“wwidth> = 320”。如果窗口大于480,该怎么办?

还可以实现“之间”如下:

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

哦,我喜欢“之间”,我不知道这一点。如果屏幕大于480,那么我还有几条语句可以检查更多的尺寸,并以“如果1024以上”为结束语。这是我根据设备更改站点上使用的JavaScript的笨拙方式。 – mrEmpty 2012-04-21 17:35:50

+0

我很高兴你学到了一些东西。 – 2012-04-21 17:40:46