按星期几和一天中的时间显示不同的背景图像
Display a different background image by day of the week and time of day
我使用以下javascript根据一天中的时间显示不同的图像:
$(document).ready(function(){
var d = new Date();
var n = d.getHours();
if (n > 19 || n < 6)
// If time is after 7PM or before 6AM, apply night theme to ‘body’
document.body.className = "night";
else if (n > 16 && n < 19)
// If time is between 4PM – 7PM sunset theme to ‘body’
document.body.className = "sunset";
else
// Else use ‘day’ theme
document.body.className = "day";
});
http://codepen.io/jamesbarnett/pen/kdDBL
然而,我也需要在一周中的某一天定义背景图像。
因此,例如在周一,早上6点到晚上12点之间的时间显示开放时间图像,晚上12点到早上6点显示关闭时间图像。周二早上6点至下午4点显示开幕图,下午4点至8点显示闭幕图。每天都有不同的开放和关闭时间。因此,一周中的每一天都需要在javascript中定义,这样才能工作。
有人能帮我吗?
我使用了以下javascript,定义了每天的每个图像和时间,但似乎无法正常工作:
var days = [
'SUN', //Sunday starts at 0
'MON',
'TUE',
'WED',
'THU',
'FRI',
'SAT'
];
提前感谢
以下是周日和周一的代码。类名是基于你之前拥有的加上0-6天(周日-周六)的代码。如果你愿意,你可以声明一个数组以便于命名,但你不一定需要这样做
对于晚上8点之后的周日,采取的分支将使用class=night0,周一早上6点之后的下午12点是class=day 1…
注意:对于星期一晚上11:59之后的时间,您需要指定星期二n>=0到某个结束时间。注2:我也帮你修复了一些bug。在声明时间范围时,应该使用和(&&),即n>0&;n<12表示午夜至上午1159点,n>=12&;n<24表示中午至下午11时59分。
使用或(||)可能会引入错误。例如,如果n>0||n<12,则n>0将在12:00am之后始终为真,并且将跳过其他分支。
演示:http://codepen.io/anon/pen/uHgDF
JS:
$(document).ready(function(){
var d = new Date();
var n = d.getHours();
var day = d.getDay();
// change this to test days
day =0;
// n =0;
if (day == 0 ) {
if (n > 6 && n < 19) {
// sun 6am - sun 6:59pm
document.body.className = "day"+day; // night0 for sunday
}
else if (n >= 20 && n < 24) {
// sun 800 - sun 1159pm
document.body.className = "night"+day;
}
else {
// Else use ‘day’ theme
document.body.className = "sunset"+day;
}
}
else if ( day == 1 ) {
// today is monday
if (n > 6 && n < 12) {
// Mon 6:00am - Mon 11:59am
document.body.className = "day"+day; // night1
}
else if (n >= 12 && n < 24) {
// Mon 12pm - 1159pm
document.body.className = "night"+day;
}
else {
document.body.className = "sunset"+day;
}
}
else if ( day == 2 ) {
// etc...
}
});
CSS:
/* backgrounds */
.day0 { background:red; }
.sunset0 { background:green; }
.night0 { background:blue; }
/* backgrounds */
.day1 { background:yellow; }
.sunset1 { background:gray; }
.night1 { background:brown; }
你可以这样得到:
(function day(){
//get the hours
var a = new Date();
var n = a.getHours();
if (n > 19 || n < 6){
var s = "night";
}
else if (n > 16 && n < 19){
var s = "sunset";
}
else{
var s = "day";
}
//get the day
var d = new Date();
var c = d.getDay();
var weekday=new Array(7);
weekday[0]="Monday";
weekday[1]="Tuesday";
weekday[2]="Wednesday";
weekday[3]="Thursday";
weekday[4]="Friday";
weekday[5]="Saturday";
weekday[6]="Sunday";
alert("Today is "+weekday[c]+" at "+s);
}());
我建议创建一个更灵活的结构,以保持所有不同的开盘和收盘组合。在这种情况下,正如您所说的,一周中的每一天都需要在javascript中定义才能工作,我建议使用一个按天索引的数组(0表示周日,1表示周一,2表示周二,依此类推)。在每一天中,您可以保留与相应的开放和关闭时间相关联的所有背景。
var background = function (d) {
// All days must be defined in the backgrounds array.
// You can have as many different opening/closing defined as you need.
// In case of overlap return the first opening/closing that meets the condition.
var backgrounds = [
// Sunday
[{opening: 0, closing: 5, background: 'night'},
{opening: 19, closing: 23, background: 'night'}],
// Monday
[{opening: 0, closing: 5, background: 'night'},
{opening: 19, closing: 23, background: 'night'}],
// Tuesday
[{opening: 0, closing: 5, background: 'night'},
{opening: 17, closing: 18, background: 'sunset'},
{opening: 19, closing: 23, background: 'night'}],
// Wednesday
[{opening: 0, closing: 5, background: 'night'},
{opening: 19, closing: 23, background: 'night'}],
// Thursday
[{opening: 0, closing: 5, background: 'night'},
{opening: 19, closing: 23, background: 'night'}],
// Friday
[{opening: 0, closing: 5, background: 'night'},
{opening: 19, closing: 23, background: 'night'}],
// Saturday
[{opening: 0, closing: 5, background: 'night'},
{opening: 19, closing: 23, background: 'night'}],
];
var day = backgrounds[d.getDay()];
var hour = d.getHours();
for (var i = 0; i < day.length; i++) {
if (day[i].opening <= hour && hour <= day[i].closing) {
return day[i].background;
}
}
// return day by default.
return 'day';
};
$(document).ready(function(){
document.body.className = background(new Date());
}
- 显示时间的脚本
- 如何用前导零显示时间
- 如何在烛光图表中添加/显示时间框架
- 如何在页面上显示时间、日期IP和URL?更新日期:2015年2月25日
- 在条件中的几个时间行中设置自定义css效果后,从Jquery时间选择器显示时间
- 在指定时间中添加 24 小时后在网页上显示时间 x
- 如何像这样显示时间,例如:1秒前,1分钟前,1小时前,1个月前
- j查询日期选取器不显示时间输入值
- JavaScript 和 JQuery:在文本框中显示时间
- 给定一个时间戳,如何按天/周/月显示时间
- 为什么不显示时间
- 显示时间而不是日期的图表
- 根据天数和月数显示时间戳
- 如何在 Javascript 中显示时间
- 如果午夜使用时刻.js,则不显示时间
- 是否可以筛选 JSON 源以仅显示时间戳字符串中的时间
- 检查后显示时间选择器复选框,导轨(Redmine)
- 设置showErrorMessage()的显示时间
- 以12小时格式显示时间
- 日期时间倒计时,删除小数,并在每个类别中保留时间显示时间