You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript实现根据当前时间动态显示不同问候语文本

问题根因

你的代码问题出在if判断分支的顺序逻辑错误:
JavaScript的if...else if分支会从上到下依次匹配,只要命中某一个条件就会直接终止后续判断,不会再校验后面的条件。你现在把hour >= 6放在第一个判断位,所有大于等于6的小时(包括12点、19点)都会直接命中第一个分支,返回"Good Morning",后面的12点、19点判断永远不会生效。同理凌晨时段的判断也存在顺序颠倒的问题,hour >= 0放在前面的话,2点、3点的判断也永远不会触发。


修正后的完整代码

JavaScript

function getDateTime() { 
    let date = new Date(); 
    let hour = date.getHours();
    // 调整判断顺序,从大到小匹配小时值
    if (hour >= 19) {
        document.getElementById('d').innerHTML = "Good Evening";
    } else if (hour >= 12) {
        document.getElementById('d').innerHTML = "Good Afternoon";
    } else if (hour >= 6) {
        document.getElementById('d').innerHTML = "Good Morning";
    } else if (hour >= 3) {
        document.getElementById('d').innerHTML = "GO. TO. SLEEP.";
    } else if (hour >= 2) {
        document.getElementById('d').innerHTML = "You should consider going to sleep";
    } else if (hour >= 0) {
        document.getElementById('d').innerHTML = "Go to sleep soon";
    } else {
        document.getElementById('d').innerHTML = "If you see this, something is wrong with the code";
    }
}
getDateTime()

// 可选优化:如果需要页面长时间开着也能自动切换问候语,添加下面的定时器,每60秒刷新一次时间判断
// setInterval(getDateTime, 60 * 1000)

CSS

h1 {
  text-align: center;
  position: relative;
  font-size: 50px;
}

HTML

<h1 id="d">

</h1>

内容的提问来源于stack exchange,提问作者Marcus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 16:27:04