我一直在使用这个与我一直合作过的代码。
对于上下文,我正在编写一个简单的Tumblr页面(不是我的博客主题,只是一个页面),其中音乐,背景和gif将根据一天中的时间而改变。经过多次挫折和反复试验之后,我得到了大部分工作 - 除了一件事。
我希望有一天三次(白天,日落,夜晚)但是,我只能白天和黑夜,因为每当我尝试包括“否则”它不起作用。这是 工作的当前代码,但每天只有两次(夜晚/日落):
var currentTime = new Date().getHours();
if (19 <= currentTime && currentTime < 6) {
if (document.body) {
document.body.background = "(night bg)";
var url = "(night gif)";
var img = new Image();
img.src = url;
document.body.appendChild(img);
var source = "(night music)";
var audio = new Audio();
audio.addEventListener("load", function() {
audio.play();
}, true);
audio.src = source;
audio.autoplay = true;
audio.loop = true;
}
}
else {
if (document.body) {
document.body.background = "(sunset bg)";
var url = "(sunset gif)";
var img = new Image();
img.src = url;
document.body.appendChild(img);
var source = "(day music)";
var audio = new Audio();
audio.addEventListener("load", function() {
audio.play();
}, true);
audio.src = source;
audio.autoplay = true;
audio.loop = true;
}
}
我试图改变
else {
if (document.body) {
document.body.background = "(day bg)";
在顶部说“else if”而不只是“else”,并且还添加时间,如下:
else if (16 <= currentTime && currentTime < 19) {
if (document.body) {
document.body.background = "(day bg)";
当这不起作用时,我尝试了多种方法,比如取消“if”或将“if”和“else”同时变成“else if”但我没有任何工作。我还试图制作第三个块,其余的编码只是“其他”,但这也不起作用。有人知道解决方案和/或我做错了吗?
答案 0 :(得分:1)
我认为你必须改变你的代码。
if(19&lt; = currentTime&amp;&amp; currentTime&lt; 6)不正确。
因为它意味着19 <= X&lt;这不可能。
所以你应该改变if(19&lt; = currentTime || currentTime&lt; 6)
var currentTime = new Date().getHours();
if (19 <= currentTime || currentTime < 6) {
if (document.body) {
document.body.background = "(night bg)";
var url = "(night gif)";
var img = new Image();
img.src = url;
document.body.appendChild(img);
var source = "(night music)";
var audio = new Audio();
audio.addEventListener("load", function() {
audio.play();
}, true);
audio.src = source;
audio.autoplay = true;
audio.loop = true;
}
}
else if(16 <= currentTime && currentTime < 19){
/* programming Here */
}
else {
if (document.body) {
document.body.background = "(sunset bg)";
var url = "(sunset gif)";
var img = new Image();
img.src = url;
document.body.appendChild(img);
var source = "(day music)";
var audio = new Audio();
audio.addEventListener("load", function() {
audio.play();
}, true);
audio.src = source;
audio.autoplay = true;
audio.loop = true;
}
}
答案 1 :(得分:1)
我认为您的解决方案可以改进。如果您查看代码,您会发现每个事件都有很多重复。
如果您想添加其他活动,还需要添加更多代码。
我建议您在数组中制定计划。这使得添加新事件变得更加容易。
length
如果你仍想使用if语句,这是一个有效的例子:
// Define the schedule. start= start hour, end = end hour.
// With start=6 and end=19, the schedule will be used between
// 06:00 - 18:59.
// The schedules will be searched in order, and the first matching
// schedule will be used. Therefore the default schedule (night) must
// be last in the list.
var schedule = [
{ start : 6, end:19, bbg:"(sunset bg)", img:"(sunset gif)", music:"(sunset music)" },
// Default schedule, must be last in list.
{ start : 0, end:24, bbg:"(night bg)", img:"(night gif)", music:"(night music)" }
];
var currentHour = new Date().getHours();
var currentSchedue;
// Loop though schedules
for (var idx=0; idx < schedule.length; idx+=1) {
currentSchedule = schedule[idx];
// Find first matching schedule
if (currentSchedule.start <= currentHour && currentSchedule.end > currentHour) {
document.body.background = currentSchedule.bbg;
var img = new Image();
img.src = currentSchedule.img;
document.body.appendChild(img);
var audio = new Auido();
audio.src = currentSchedule.music;
audio.autoplay = true;
audio.loop = true;
break; // stop loop if matching schedule was found
}
}
if语句中的逻辑错误:
if ( 6 <= currentHour && currentHour < 16 ) {
// Daytime, valid from 06:00 - 15:59
console.log('Day', currentHour);
}
else if ( 16 <= currentHour && currentHour < 19 ) {
// Evening valid from 16:00 - 18:59
console.log('Evening', currentHour);
}
else {
// Night, valid 00:00 - 05:59 and 19:00 - 24:00
console.log('Night', currentHour);
}
if (19 <= currentTime && currentTime < 6) {
}
仅在currentTime为19或更高时才为真19 <= currentTime
仅在currentTime小于6时才为真。他们不可能同时成真。
答案 2 :(得分:-1)
var currentTime = new Date().getHours();
if (currentTime > 19 && currentTime < 6) {
// Night
} else if (currentTime > 6 && currentTime < 17) {
// Day
} else {
// Sunset
}
有关详细信息,请参阅here