我认为问题出在&&运算符,当我将其切换到||时得到结果。如果我保留&&,结果将不会返回。
我的代码在下面。
<!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>
答案 0 :(得分:2)
您最终的if
声明将永远不会等于true
; time
不能小于(或等于)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>