JavaScript永远不会进入其他块

时间:2014-02-25 22:55:46

标签: javascript jquery

我不明白为什么我不能让代码在这段代码中输入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>');
}

有人可以帮帮我吗?

5 个答案:

答案 0 :(得分:6)

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

应该是

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

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

答案 1 :(得分:4)

重新思考你的逻辑。每个数字都是> = 6或&lt; = 21所以它始终是真的。我认为(&&)就是你要找的东西。

答案 2 :(得分:4)

您的条件n >= 6 || n <= 21对所有数字都适用。 ||是逻辑OR运算符,对于布尔值,如果左侧的条件或右侧的条件为真,则它将返回true 1 。任何不大于或等于6的数字都将小于或等于21.

我认为您打算使用&&

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

进一步阅读

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

答案 3 :(得分:0)

||表示OR:数字总是大于6或小于21,因此永远不会达到您的其他分支。你需要的是&amp;&amp;

答案 4 :(得分:0)

只需添加&amp;&amp;并删除||

<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>