否则如果陈述不起作用
问题描述:
我一直在与我一直在努力的代码艰难的时间。否则如果陈述不起作用
对于上下文,我正在编程一个简单的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)";
变成了“其他if”而不是仅仅“else”在顶部,并且还增加了一个时间,如下所示:
else if (16 <= currentTime && currentTime < 19) {
if (document.body) {
document.body.background = "(day bg)";
时没有工作,我尝试过许多东西,就像脱离了“如果”或使得无论是“如果”和“别人”到“否则,如果”但我已经得到了什么工作。我还试图制作第三个块,其余的编码只是“其他”,但这也不起作用。有人知道解决方案和/或我做错了什么吗?
答
我认为你必须改变你的代码。
if(19 < = currentTime & & currentTime < 6)不正确。
因为这意味着19 < = X < 6.这是不可能的。
所以,你应该改变,如果(19 < = currentTime的|| currentTime的< 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;
}
}
答
我认为您的解决方案可以改进。如果你看看你的代码,你会发现每个事件都有很多重复。
如果你想添加另一个事件,还有更多的代码要添加。
我建议你在阵列中进行,而不是时间表。这使得添加新事件变得更容易。
// 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语句:
if (19 <= currentTime && currentTime < 6) {
}
-
19 <= currentTime
仅当currentTime为19或更高时才成立 -
currentTime < 6
只有当currentTime小于6时才为true。
它们不能同时为真。
if(19 zynkn