我可以在else语句中使用两个动作吗?

时间:2017-06-15 16:20:33

标签: javascript

很抱歉,如果这是一个基本问题,但我不能让两个“行动”在其他单一的情况下工作。

我希望它能说出不同的问候,同时根据当前时间改变身体的背景颜色。

代码无需此行:

document.getElementById("####").style.background = '#######';

这是不起作用的代码:

    var today = new Date();
    var hourNow = today.getHours();
    var greeting;

    if (hourNow > 20) {
        greeting = 'Boa noite!'; document.getElementById("body").style.background = '#000000';
    } else if (hourNow > 12) {
        greeting = 'Boa tarde!';
        document.getElementById("body").style.background = '#ffffff'; 
    } else if (hourNow > 0) {
        greeting = 'Bom descanço!'; document.getElementById("body").style.background = '#121212';
    } else if (hourNow > 7) {
        greeting = 'Bom dia!'; document.getElementById("body").style.background = '#bf3d3d';
    }
    document.write(greeting);

我感谢我能得到的每一个帮助!谢谢你提前!!

4 个答案:

答案 0 :(得分:1)

您可以使用所需参数的对象来更改并使用所需顺序中的键数组,并使用回调来更改给定值。

var greetings = {
        20: {
            greeting: 'Boa noite!',
            background: '#000000'
        },
        12: {
            greeting: 'Boa tarde!',
            background: '#ffffff'
        },
        7: {
            greeting: 'Bom dia!',
            background:'#bf3d3d'
        },
        0: {
            greeting: 'Bom descanço!',
            background: '#121212'
        }
    },
    hourNow = (new Date).getHours();


[20, 12, 7, 0].some(function (hour) {
    if (hourNow >= hour) { // check for greater and equal
        document.getElementById("greeting").innerHTML = greetings[hour].greeting; 
        document.body.style.background = greetings[hour].background;
        return true;       // exit loop
    }
});
<div id="greeting" style="background-color: #ffffff;"></div>

答案 1 :(得分:0)

您应该在您的身体上添加<h1>标记,然后在其上设置内心文字以用于问候语。

<!-- HTML -->
<h1 id="greeting"></h1>

// JS
var greeting = document.getElementById('greeting');

if (hourNow > 20) {
    greeting.innerText = 'Boa noite!';
    document.body.style.backgroundColor = '#000000';
}

答案 2 :(得分:0)

你应该把

else if (hourNow > 7)

else if (hourNow > 0)

现在是最后一个如果无法到达

答案 3 :(得分:-1)

如果您未在break中提供case,则可以使用switch statement并利用直通行为。