2014-02-25 46 views
-4

我不明白为什么我不能让代码输入此代码else块:的JavaScript永远不会进入else块

var d = new Date(); 
var n = d.getHours(); 

if(n >= 6 || n <= 21) { 
    $('body').html('<div id="bg"><img src="bg_day.jpg" alt=""></div>'); 
} else { 
    $('body').html('<div id="bg"><img src="bg_night.jpg" alt=""></div>'); 
} 

有人可以帮我吗?

+6

'n> = 6 || n <= 21'永远是正确的尝试'n> = 6 && n <= 21' – megawac

+0

你是什么意思,你不能得到它的工作?你是否说过其他条件从未被调用过?还是你说它在调用时不起作用? –

回答

0

只是加上& &并删除||

<script> 
var d = new Date(); 
var n = d.getHours(); 

if(n >= 6 && n <= 21){ 
    $('body').html('<div id="bg"><img src="bg_day.jpg" alt=""></div>'); 
} 
else{ 
    $('body').html('<div id="bg"><img src="bg_night.jpg" alt=""></div>'); 
} 
</script> 
6
f(n >= 6 || n <= 21){ 

应该

f(n >= 6 && n <= 21){ 

22大于6,因此将评估为真

4

重新考虑你的逻辑。每个数字是> = 6或< = 21,所以它将永远是真实的。我认为和(&&)是你正在寻找的。

+0

“*每个数字都是> = 6或<= 21 *”。除了'NaN' :) – Oriol

+0

@Oriol有点矛盾,但是正确! – aw04

4

对于所有数字,您的条件n >= 6 || n <= 21将为真。 ||是逻辑OR运算符,布尔值,如果有的话无论是在左边或右边的条件条件为真它将返回true。任何数量比6不大于或等于将小于或等于21

我想你想用&&

if(n >= 6 && n <= 21){ 
    ... 
} 

进一步阅读

1.它实际上有点m由于短路和类型转换,矿石比这更复杂,但请参阅上面的链接了解更多详情。

0

||意思是OR:数字总是大于6或低于21,所以你的else分支永远不会到达。你需要的是& &

相关问题