在IF语句中使用and运算符时出现问题

时间:2018-10-04 02:19:12

标签: javascript

我认为问题出在&&运算符,当我将其切换到||时得到结果。如果我保留&&,结果将不会返回。

我的代码在下面。

<!DOCTYPE html>
<html>
<body>

<p id="greeting"></p></center>

<script>
var time = new Date().getHours();
let phrase = "";

if ((time > 6) && (time < 12)) {
    phrase = "Good Morning";
} else if ((time > 12) && (time < 18)) {
    phrase = "Good Afternoon";
} else if ((time >= 18) && (time <= 6)) {
    phrase = "Good Evening";
}
document.getElementById("greeting").innerHTML = phrase;
</script>

</body>
</html>

1 个答案:

答案 0 :(得分:2)

您最终的if声明将永远不会等于truetime不能小于(或等于)18,而不能大于(或等于)6。您正在这里寻找OR语句(||),因为time总是在下午6点(> 18)或早上6点(< 6之前)-不能两者都使用:

else if ((time >= 18) || (time <= 6))

话虽如此,该更正现在将涵盖所有小时,这意味着最终条件实际上是无关紧要的;如果前两个if语句中的任何一个都没有插入,则将满足始终的条件。这样,您可以简单地将其替换为else

var time = new Date().getHours();
let phrase = "";

if ((time > 6) && (time < 12)) {
  phrase = "Good Morning";
} else if ((time > 12) && (time < 18)) {
  phrase = "Good Afternoon";
} else {
  phrase = "Good Evening";
}

document.getElementById("greeting").innerHTML = phrase;
<!DOCTYPE html>
<html>

<body>
  <center>
    <h2>Individual Tech Proficiency 1</h2>
    <h4>Emulator</h4>
    <p id="greeting"></p>
  </center>
</body>

</html>