如何每小时更改 Body 背景图像?

How Do I Change A Body Background Image Every Hour?

对于我的网页设计 class,我们被指示进行为期一周的练习,在练习中我们弄清楚如何对一个显示时间和温度的时钟采取创造性的方法。这个class是根据创造力评分的,允许并鼓励我使用插件。

对于我的想法,我认为每小时更改一次我的网站背景以匹配相应的时间会很有趣。我有多个花朵盛开和闭合的图像,我认为这些图像与一天中的时间相对应会很有趣。

我应该怎么做才能把我已经有的东西拿来制作,这样我就可以每小时更换一次背景图片?它应该与我现有的 javascript 插件时钟相对应,还是完全是一个单独的实现?提前致谢!

我不希望图像在设定的时间间隔后发生变化,我希望一天中的某些时间与背景图像相对应。

body {
  background-color: black;
  margin-left: 5%;
  margin-right: 5%;
}

#txt {
  color: white;
  float: left;
  font-family: OpenSans;
  font-size: 90px;
  margin: 20px;
}

#weather {
  color: white;
  float: right;
  font-family: OpenSans;
  font-size: 40px;
  margin: 20px;
}
<!DOCTYPE html>
<html>
  <head>
    <title>Blooming Time And Temperature</title>
    <link href="css/format.css" rel="stylesheet"/>
    <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
    <script>
    function startTime() {
  document.getElementById('txt').innerHTML =
    moment().format("hh:mm A");
  var t = setTimeout(startTime, 1000);
}
    </script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.simpleWeather/3.1.0/jquery.simpleWeather.min.js"></script>
    <script>
      $(document).ready(function() {
        $.simpleWeather({
          location: 'Brooklyn, NY',
          woeid: '',
          unit: 'f',
          success: function(weather) {
            html = '<p>'+weather.temp+'&deg;'+weather.units.temp+'</p>';
            html += '<div id="city">'+weather.city+', '+weather.region+'</div>';

            $("#weather").html(html);
          },
          error: function(error) {
            $("#weather").html('<p>'+error+'</p>');
          }
        });
      });
    </script>
  </head>
  <body onload="startTime()">
    <div id="txt"></div>
    <div id="weather"></div>
  </body>
</html>

为了简单起见,您可以 setInterval()。它是这样工作的:http://www.w3schools.com/jsref/met_win_setinterval.asp

我会做的是检查当前时间,然后得到现在和下一个小时之间的时差(也就是说,如果它是 10:30,我想知道 [=20] 之间有多少时间=] 和 11),以毫秒为单位执行 setTimeout(),然后调用一个开始 setInterval() 函数的函数,该函数将每小时调用一次。

希望对您有所帮助!

您需要按小时获取一天中的小时数。根据小时,您可以使用 jQuery:

更改背景
$(document).ready(function() {

    setInterval(function(){
        var hour = new Date().getHours();
        if(hour > 7 && hour <= 12)
        {
           // It's morning
           $('body').css('background', 'url(url-to-image-one) no-repeat');
        }
        else if(hour > 12 && hour < 18)
        {
           // It's noon
           $('body').css('background', 'url(url-to-image-two) no-repeat');
        }
        else
        {
            // It's night
            $('body').css('background', 'url(url-to-image-three) no-repeat');
        }
    }, 1000 * 60 *60);

});

这是 John duckett javascript 和 jquery 书中的代码

var today= new Date();
var hourNow = today.getHours();
var greeting;
if (hourNow > 18) {
greeting= 'Good evening!';
else if (hourNow > 12) {
greeting = ' Good afternoon!';
else if (hourNow > 0) {
greeting = 'Good morni ng!';
else {
greeting = 'Welcome! ' ;
}
document .write( ' <h3>' +greeting + ' </ h3> '); 

变量greeting的值是根据if条件改变的。参见 Date and getHours() method