Javascript 基于本地时间改变背景图像

Javascript 基于本地时间改变背景图像,javascript,html,css,Javascript,Html,Css,我已经花了4个多小时试图弄明白这一点,堆栈中的问题(已经回答)对我来说都不起作用,下面是代码: .天{ 背景图片:url(test2.png); } .晚上{ 背景图片:url(test.png); } setInterval(函数(){ var d=新日期(); var n=d.getHours(); 如果(n>23 | | n=23,或者n>23是什么意思?他能24岁吗?n

我已经花了4个多小时试图弄明白这一点,堆栈中的问题(已经回答)对我来说都不起作用,下面是代码:


.天{
背景图片:url(test2.png);
}
.晚上{
背景图片:url(test.png);
}
setInterval(函数(){
var d=新日期();
var n=d.getHours();
如果(n>23 | | n<6){
document.body.className=“夜间”;
}否则{
document.body.className=“天”;
}
控制台日志(“测试”);
}, 1000 * 60 * 60);

您的逻辑是完美的,并按预期工作(我将图像更改为颜色,因为在尝试您的代码片段时StackOverflow出现错误)

唯一的问题(对你来说是一个问题,对其他人来说是一个设计特性)是setInterval在第一个间隔完成后开始。换言之;你必须等一个小时才能看到结果

在我的修复中,我将JavaScript移到了一个单独的函数中,
setInterval
提到了这个函数,然后立即调用它

我还删除了body上的双类,因为这将由函数设置

编辑:我忘了提到这个代码可能会出现两个类(
day
night
)。当应用
night
时,您应该编写一些逻辑来删除
day
,反之亦然

编辑2:我暂时改变了一下方程式
n
不能大于23,但可以是23。另外,你想把它改为7天左右,包括6天。所以你的方程应该是正确的

正如用户所说,您应该缩短间隔。如果一个用户在6:58开始浏览你的网站,并在一个页面上停留一个小时(我不知道你的网站的业务,但这相当长),背景会在7:58左右改变。因此,将间隔时间减少到1或2分钟左右(
1000*60*1
1000*60*2


.天{
背景色:#ccc;
}
.晚上{
背景色:#333;
}
设置间隔(改变背景,1000*60*60);
函数更改\u背景(){
var d=新日期();
var n=d.getHours();
控制台日志(n);
如果(n==23 | | n<7){
document.body.className=“夜间”;
}否则{
document.body.className=“天”;
}
控制台日志(“测试”);
}
更改背景();

不妨加上它应该是>=23或@SalmanA>=23,或者n>23是什么意思?他能24岁吗?n<6表示5或更少。不,
n
不能是24。你说得对。这里已经很晚了,让我改变我的答案!间隔应该更小,比如1分钟。否则,如果用户在11:00:00.001PM打开页面,他将不得不等待1小时页面更新。