我正在一个小网站上工作,该网站为我大学的一个系提供一些资源。一切都很顺利,所以我尝试添加一些功能以使事情更直观。
如果您想查看完整的 HTML 结构和其他所有内容,请查看相关页面:{链接已删除以保护个人内容}
基本上,这是一张桌子,上面有一排专门用于我们今年夏天负责的每个营地。这一切都很好,花花公子。现在,我想要做的是突出显示当前正在会话中的任何营地的行(通过将“活动”类添加到行中)。鉴于我在 JavaScript 方面的经验相当有限,这就是我想出的:
<script type="text/javascript" >
$(document).ready(function() {
var today = new Date();
var Traffic_Court_Start = new Date("May 31 2012 12:01 AM");
var Traffic_Court_Stop = new Date("June 1 2012 11:59 PM");
var Summer_Enrichment_Start = new Date("June 10 2012 12:01 AM");
var Summer_Enrichment_Stop = new Date("June 16 2012 11:59 PM");
var Wbb_Ind_Start = new Date("June 11 2012 12:01 AM");
var Wbb_ind_Stop = new Date("June 14 2012 11:59 PM");
var Soccer_Referee_Start = new Date("June 15 2012 12:01 AM");
var Soccer_Referee_Stop = new Date("June 16 2012 11:59 PM");
var Broadcast_Start = new Date("June 17 2012 12:01 AM");
var Broadcast_Stop = new Date("June 21 2012 11:59 PM");
var Tennis_1_Start = new Date("June 17 2012 12:01 AM");
var Tennis_1_Stop = new Date("June 21 2012 11:59 PM");
var Tennis_2_Start = new Date("June 24 2012 12:01 AM");
var Tennis_2_Stop = new Date("June 28 2012 11:59 PM");
var Volleyball_Start = new Date("July 8 2012 12:01 AM");
var Volleyball_Stop = new Date("July 11 2012 11:59 PM");
var Soccer_1_Start = new Date("July 8 2012 12:01 AM");
var Soccer_1_Stop = new Date("July 12 2012 11:59 PM");
var IACAC_Start = new Date("July 9 2012 12:01 AM");
var IACAC_Stop = new Date("July 11 2012 11:59 PM");
var Summer_Forensics_Start = new Date("July 15 2012 12:01 AM");
var Summer_Forensics_Stop = new Date("July 28 2012 11:59 PM");
var Soccer_2_Start = new Date("July 22 2012 12:01 AM");
var Soccer_2_Stop = new Date("July 26 2012 11:59 PM");
var Cross_Country_Start = new Date("July 25 2012 12:01 AM");
var Cross_Country_Stop = new Date("July 28 2012 11:59 PM");
if((today <= Traffic_Court_Stop && today >= Traffic_Court_Start))
{
document.getElementById('traffic_court').classList.add('active');
};
if((today <= Summer_Enrichment_Stop && today >= Summer_Enrichment_Start))
{
document.getElementById('summer_enrichment').classList.add('active');
};
if((today <= Wbb_Ind_Stop && today >= Wbb_Ind_Start))
{
document.getElementById('wbb_ind').classList.add('active');
};
if((today <= Soccer_Referee_Stop && today >= Soccer_Referee_Start))
{
document.getElementById('soccer_referee').classList.add('active');
};
if((today <= Broadcast_Stop && today >= Broadcast_Start))
{
document.getElementById('broadcast').classList.add('active');
};
if((today <= Tennis_1_Stop && today >= Tennis_1_Start))
{
document.getElementById('tennis_1').classList.add('active');
};
if((today <= Tennis_2_Stop && today >= Tennis_2_Start))
{
document.getElementById('tennis_2').classList.add('active');
};
if((today <= Volleyball_Stop && today >= Volleyball_Start))
{
document.getElementById('volleyball').classList.add('active');
};
if((today <= Soccer_1_Stop && today >= Soccer_1_Start))
{
document.getElementById('soccer_1').classList.add('active');
};
if((today <= IACAC_Stop && today >= IACAC_Start))
{
document.getElementById('IACAC').classList.add('active');
};
if((today <= Summer_Forensics_Stop && today >= Summer_Forensics_Start))
{
document.getElementById('summer_forensics').classList.add('active');
};
if((today <= Soccer_2_Stop && today >= Soccer_2_Start))
{
document.getElementById('soccer_2').classList.add('active');
};
if((today <= Cross_Country_Stop && today >= Cross_Country_Start))
{
document.getElementById('cross_country').classList.add('active');
};
});
</script>
如您所见,我首先获取今天的日期,然后指定每个营地的开始和结束日期。然后,我使用一堆 if 语句来确定“今天”是否介于每个训练营的开始日期和结束日期之间。如果这是真的,它会将“活动”类添加到与该营地相对应的行中。
前两个阵营似乎工作正常……也就是说,如果我将“今天”的值更改为 5 月 31 日,它会突出显示第一行。或者,如果我将其更改为 6 月 15 日,它会突出显示第二行。问题是,如果“今天”是 6 月 15 日,它应该突出显示 summer_enrichment 和 football_referee 行。它仅突出显示 summer_enrichment 行。
我已经仔细检查了我引用的元素 ID、我的变量的拼写等,一切看起来都是正确的(除非我错过了一些明显的东西)。我有什么理由不能使用我介绍的脚本吗?我不认为是这种情况,但是像这样连续使用这么多 if 语句有问题吗?我唯一的想法是,也许它认为它们是一堆其他情况,但我想我会在每个 if 语句后用分号来逃避它。
有什么想法吗?也许有更好的方法来做到这一点?我环顾四周寻找一些答案,但似乎在其他任何地方都找不到类似的东西(尽管我确信这已经完成并且实施得更好)。
感谢您的帮助!!!
编辑:在其中一些回复的帮助下让一切正常工作后,我想我会为可能偶然发现这个问题的未来用户分享最终代码。
<script type="text/javascript">
$(document).ready(function() {
var today = new Date();
var SCHEDULE = {
'tc': ['May 31 2012', 'June 1 2012'],
'se': ['June 10 2012', 'June 16 2012'],
'wbb': ['June 11 2012', 'June 14 2012'],
'sr': ['June 15 2012', 'June 16 2012'],
'broadcast': ['June 17 2012', 'June 21 2012'],
'ten1': ['June 17 2012', 'June 21 2012'],
'ten2': ['June 24 2012', 'June 28 2012'],
'volleyball': ['July 8 2012', 'July 11 2012'],
'soc1': ['July 8 2012', 'July 12 2012'],
'iacac': ['July 9 2012', 'July 11 2012'],
'sf': ['July 15 2012', 'July 28 2012'],
'soc2': ['July 22 2012', 'July 26 2012'],
'cc': ['July 25 2012', 'July 28 2012']
};
for (var camp in SCHEDULE) {
console.log('checking ' + camp + ', dates have to be within the ' + SCHEDULE[camp] + ' range');
//console.log(Date.parse(SCHEDULE[camp][0]));
if (today >= Date.parse(SCHEDULE[camp][0]) && today <= Date.parse(SCHEDULE[camp][1])) {
console.log(camp + ' is currently in session!');
document.getElementById(camp).classList.add('active');
};
};
});
</script>
非常感谢大家!!!