根据一天中的小时更改背景图像

时间:2017-02-24 21:41:26

标签: javascript css

我有一些代码应该根据一天中的小时改变背景。这将在我自己的家里一直运行,所以我需要帮助让它工作并每隔5分钟左右刷新一次。我认为它应该如何工作是它将看看它是什么时间,遵循一些逻辑然后写出下一行作为

你能帮助我找出它为什么不起作用以及如何解决它?我是编码的新手,不知道很多。

编辑:我不知道错误是什么,它只是不改变背景,它保持白色

<script type="text/javascript">
    var now = new Date();
    var hours = now.getHours();

    //Place this script in your HTML heading section

    //1-2am
    if (hours >= 1 && hours < 3){
    document.write(<body background="11.png">);
    }
    //3-4am
    else if (hours >= 3 && hours < 5){
    document.write(<body background="12.png">);
    }
    //5-6am
    else if (hours >= 5 && hours < 7){
    document.write(<body background="1.png">);
    }
    //7-8am
    else if (hours >= 7 && hours < 9){
    document.write(<body background="2.png">);
    }
    //9-10am
    else if (hours >= 9 && hours < 11){
    document.write(<body background="3.png">);
    }
    //11-12pm
    else if (hours >= 11 && hours < 13){
    document.write(<body background="4.png">);
    }
    //1-2Pm
    else if (hours >= 13 || hours < 15){
    document.write(<body background="5.png">);
    }
    //3-4pm
    else if (hours >= 15 && hours < 17){
    document.write(<body background="6.png">);
    }
    //5-6pm
    else if (hours >= 17 && hours < 19){
    document.write(<body background="7.png">);
    }   
    //7-8 pm
    else if (hours >= 19 && hours < 21){
    document.write(<body background="9.png">);
    }       
    //10-12am
    else {
    document.write(<body background="10.png">);
    }
    </script>

2 个答案:

答案 0 :(得分:1)

<script type="text/javascript">
function changeBg() {
    var now = new Date();
    var hours = now.getHours();

    //based on hours it will dynamically change the image
        //1.png, 2.png, ..., 23.png
        document.body.style.backgroundImage ="url('" + hours + ".png')"

 }
changeBg();
 setInterval(function(){ changeBg(); }, 300000); //300000 means 5 min
</script>

答案 1 :(得分:0)

您可以动态更改背景。注意带有时间和相应图像名称的模式。您可以将一个映射到另一个,以便将代码缩短相当多。另外,我建议不要一遍又一遍地编写body标签,而是更改body标签的CSS背景。

当然,此代码只执行一次,因此您需要以固定的时间间隔调用它,以便它能够按时更新。您可以使用setInterval。此函数将回调函数作为第一个参数,以及您希望间隔时间的毫秒数。由于背景仅每两小时更改一次,因此您可以每分钟执行一次该功能。一分钟(毫秒)为1 * 60 * 1000;

setInterval(function() {
    var now = new Date();
    var hours = now.getHours();
    var imgName = (Math.floor((hours + 23) / 2) + 10) % 12 + 1;

    //Place this script in your HTML heading section
    document.body.style.backgroundColor = "red";
    document.body.style.backgroundImage = imgName + ".png";
}, 60 * 1000);