否则如果陈述不起作用

问题描述:

我一直在与我一直在努力的代码艰难的时间。否则如果陈述不起作用

对于上下文,我正在编程一个简单的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)"; 

时没有工作,我尝试过许多东西,就像脱离了“如果”或使得无论是“如果”和“别人”到“否则,如果”但我已经得到了什么工作。我还试图制作第三个块,其余的编码只是“其他”,但这也不起作用。有人知道解决方案和/或我做错了什么吗?

+4

if(19 zynkn

我认为你必须改变你的代码。

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; 
 

 

 
    } 
 
}

+1

代码转储不是很好的答案。给它添加一些解释 –

+1

没有解释的答案是不完整的。请解释什么和你为什么改变。请记住,你正在为读者回答。 – Rajesh

+0

对不起家伙。其实我不熟悉英文和计算器。并感谢您的建议。我会尽力解释我的代码。 – zynkn

var currentTime = new Date().getHours(); 
if (currentTime > 19 && currentTime < 6) { 
    // Night 
} else if (currentTime > 6 && currentTime < 17) { 
    // Day 
} else { 
    // Sunset 
} 

详见here

+0

请解释什么和你为什么改变。您正在为读者作答,而不仅仅是OP – Rajesh

我认为您的解决方案可以改进。如果你看看你的代码,你会发现每个事件都有很多重复。

如果你想添加另一个事件,还有更多的代码要添加。

我建议你在阵列中进行,而不是时间表。这使得添加新事件变得更容易。

// 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。

它们不能同时为真。