有问题的 IF 语句在 Javascript 中进行日期和时间比较(getDay、Date、setHours、显示、隐藏)
Problematic IF statement with date and time comparisons in Javascript (getDay, Date, setHours, show, hide)
我正在尝试根据时间和星期几为网页创建 auto-hide/show 部分。我希望 HTML/CSS 的一部分在每个星期六 9:58am 和 1:04pm 之间自动出现(在页面加载后)。我认为问题出在 Javascript 部分,尤其是 IF 语句。
当我 运行 代码时,会显示 HTML (尽管目前是星期一)。我做了显而易见的事情并更改了 IF 比较的值,这不是比较值是真的情况。我是 Javascript 的绝对新手,所以任何建议都将不胜感激!
Javascript
$(document).ready(function liveplayertimer() { //Declare function, start on page load
var d = new Date(); //d is date
var n = d.getDay(); //n is day as int, 0 to 6 Sun to Sat
var startTime = d.setHours(9, 57); //Sets start time for show to 09:57
var endTime = d.setHours(13, 05); //Sets end time for show to 13:05
if ((d.getTime() > startTime && d.getTime() < endTime) && n == 6) { //If within time AND on Saturday
$('#rcdflivediv').show(); //Show the content
}
else { //Else
$('#rcdflivediv').hide(); //Hide the content
}
}) //End of function
HTML(不完整,暂时只是一个测试占位符)
<div id="rcdflivediv" style="display: none">
<p>Live NOW! Listen in!</p>
<a href=" link removed "> (Removed for now)
<p>Listen live!</p>
</a>
</div>
和CSS,以防万一我搞砸了(不完整,现在只是一个测试占位符)
#rcdflivediv {
padding: 20px;
font-family: Montserrat, sans-serif;
size: 32px;
background-color: #0077ff;
color: #ffffff;
}
JavaScript 中的一个 Date
对象是可变的。因此,如果您想获得不同的 startTime
、endTime
和 current date
,您需要为其创建不同的对象。
var d = new Date(); //d is date
var n = d.getDay(); //n is day as int, 0 to 6 Sun to Sat
var startTime = new Date();
startTime.setHours(9, 57);//Sets start time for show to 09:57
var endTime = new Date();
endTime.setHours(13, 05
正如 Carsten 在评论中提到的那样,您正在 setHours
之前修改原始日期。
我正在尝试根据时间和星期几为网页创建 auto-hide/show 部分。我希望 HTML/CSS 的一部分在每个星期六 9:58am 和 1:04pm 之间自动出现(在页面加载后)。我认为问题出在 Javascript 部分,尤其是 IF 语句。 当我 运行 代码时,会显示 HTML (尽管目前是星期一)。我做了显而易见的事情并更改了 IF 比较的值,这不是比较值是真的情况。我是 Javascript 的绝对新手,所以任何建议都将不胜感激!
Javascript
$(document).ready(function liveplayertimer() { //Declare function, start on page load
var d = new Date(); //d is date
var n = d.getDay(); //n is day as int, 0 to 6 Sun to Sat
var startTime = d.setHours(9, 57); //Sets start time for show to 09:57
var endTime = d.setHours(13, 05); //Sets end time for show to 13:05
if ((d.getTime() > startTime && d.getTime() < endTime) && n == 6) { //If within time AND on Saturday
$('#rcdflivediv').show(); //Show the content
}
else { //Else
$('#rcdflivediv').hide(); //Hide the content
}
}) //End of function
HTML(不完整,暂时只是一个测试占位符)
<div id="rcdflivediv" style="display: none">
<p>Live NOW! Listen in!</p>
<a href=" link removed "> (Removed for now)
<p>Listen live!</p>
</a>
</div>
和CSS,以防万一我搞砸了(不完整,现在只是一个测试占位符)
#rcdflivediv {
padding: 20px;
font-family: Montserrat, sans-serif;
size: 32px;
background-color: #0077ff;
color: #ffffff;
}
JavaScript 中的一个 Date
对象是可变的。因此,如果您想获得不同的 startTime
、endTime
和 current date
,您需要为其创建不同的对象。
var d = new Date(); //d is date
var n = d.getDay(); //n is day as int, 0 to 6 Sun to Sat
var startTime = new Date();
startTime.setHours(9, 57);//Sets start time for show to 09:57
var endTime = new Date();
endTime.setHours(13, 05
正如 Carsten 在评论中提到的那样,您正在 setHours
之前修改原始日期。