[英]Using Javascript to Display Business Hours
我正在为大学图书馆开发一个新网站。 它将包括一个显示任意一天开放时间的功能。 许多库使用PHP和后端数据库或Google Calendar Integration的某种组合来做到这一点。 由于多种原因,我们无法做到这一点,所以我选择使用Javascript,因为它可以与我们的CMS(WordPress)一起使用,而无需打扰校园网站管理员。
我最初的方法是使用几个不同的文件,每个文件都有一个switch语句以显示基于星期几的小时数。 我们有3种类型的小时(常规,考试周和代祷),并且只有一个地点。 但是,必须交换文件会带来一定程度的人为错误。
因此,我决定使用一个文件。 最有意义的方法是获取日期,将其格式化为月/月中的星期数(第一,第二,第三等)/日期,然后使用一系列if ... else语句将当前日期与然后运行switch语句以选择一周中当前日期的正确时间。
问题是在第一个if语句中即使不成立,其条件仍然为true的条件。 谁能告诉我我做错了什么? 还是有更好的方法来完成此任务?
这是我的代码:
http://jsfiddle.net/mjcodelib/9aKmC/
var current = new Date(); //creates new date object
var date = current.getDate(); //gets date of month
var weekDay = current.getDay(); //gets day of week
var week_num = Math.floor((date - 1) / 7) + 1; //determines the week in the month
var month = current.getMonth() + 1; //gets month number
var date_formatted = month + '/' + week_num + '/' + weekDay;
//puts date into month/week number/date format
var date_month = month + '/' + date;
var date_test = new Date (2014, 11, 24); //for troubleshooting
if (date_formatted >= '12/3/1') { //begin winter intercession
switch (weekDay) {
case 0:
document.getElementById("hours").innerHTML="Closed Today";
break;
case 1:
case 2:
case 3:
case 4:
document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:30PM" + date_test;
break;
case 5:
document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:00PM";
break;
case 6:
document.getElementById("hours").innerHTML="Closed Today";
break;
}
} else if (date_formatted >= '12/2/1') { //begin fall exam week
switch (weekDay) {
case 0:
document.getElementById("hours").innerHTML="Today's Hours: 2:00PM to 12:00PM";
break;
case 1:
case 2:
case 3:
case 4:
document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 12:00AM";
break;
case 5:
document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 4:00PM";
break;
case 6:
document.getElementById("hours").innerHTML="Closed Today";
break;
}
} else if (date_formatted >= '11/4/1') { //begin Thanksgiving intercession
switch (weekDay) {
case 0:
document.getElementById("hours").innerHTML="Closed Today";
break;
case 1:
case 2:
case 3:
case 4:
document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:30PM";
break;
case 5:
document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:00PM";
break;
case 6:
document.getElementById("hours").innerHTML="Closed Today";
break;
}
} else if (date_formatted >= '10/4/1') { //resume regular hours after fall break
switch (weekDay) {
case 0:
document.getElementByID("hours").innerHTML="Today's Hours: 2:00PM to 10:00PM";
break;
case 1:
case 2:
case 3:
case 4:
document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 10:00PM";
break;
case 5:
document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 4:00PM";
break;
case 6:
document.getElementById("hours").innerHTML="Closed Today";
break;
}
} else if (date_formatted > '10/3/3') { //Fall break
switch (weekDay) {
case 0:
document.getElementById("hours").innerHTML="Closed Today";
break;
case 1:
case 2:
case 3:
case 4:
document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:30PM";
break;
case 5:
document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:00PM";
break;
case 6:
document.getElementById("hours").innerHTML="Closed Today";
break;
}
} else if (date_formatted == '10/3/3' ) { //begin fall break
document.getElementByID("hours").innerHTML="Today's Hours: 7:30 AM - 5:00PM";
} else if (date_formatted >= '8/3/1') { //begin fall semester
switch (weekDay) {
case 0:
document.getElementByID("hours").innerHTML="Today's Hours: 2:00PM to 10:00PM";
break;
case 1:
case 2:
case 3:
case 4:
document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 10:00PM";
break;
case 5:
document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 4:00PM";
break;
case 6:
document.getElementById("hours").innerHTML="Closed Today";
break;
}
} else if (date_month >= '8/1') { //begin August intercession
switch (weekDay) {
case 0:
document.getElementById("hours").innerHTML="Closed Today";
break;
case 1:
case 2:
case 3:
case 4:
document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:30PM";
break;
case 5:
document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:00PM";
break;
case 6:
document.getElementById("hours").innerHTML="Closed Today";
break;
}
} else if (date_formatted >= '6/1/1') { //begin regular hours for summer
switch (weekDay) {
case 0:
document.getElementByID("hours").innerHTML="Today's Hours: 2:00PM to 10:00PM";
break;
case 1:
case 2:
case 3:
case 4:
document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 10:00PM";
break;
case 5:
document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 4:00PM";
break;
case 6:
document.getElementById("hours").innerHTML="Closed Today";
break;
}
} else if (date_formatted >= '5/2/1') { //begin May intercession
switch (weekDay) {
case 0:
document.getElementById("hours").innerHTML="Closed Today";
break;
case 1:
case 2:
case 3:
case 4:
document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:30PM";
break;
case 5:
document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:00PM";
break;
case 6:
document.getElementById("hours").innerHTML="Closed Today";
break;
}
} else if (date_formatted >= '5/1/1') { //begin Spring exam week
switch (weekDay) {
case 0:
document.getElementById("hours").innerHTML="Today's Hours: 2:00PM to 12:00PM";
break;
case 1:
case 2:
case 3:
case 4:
document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 12:00AM";
break;
case 5:
document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 4:00PM";
break;
case 6:
document.getElementById("hours").innerHTML="Closed Today";
break;
}
} else if (date_formatted >= '3/3/1') { //resume regular hours after Spring Break
switch (weekDay) {
case 0:
document.getElementByID("hours").innerHTML="Today's Hours: 2:00PM to 10:00PM";
break;
case 1:
case 2:
case 3:
case 4:
document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 10:00PM";
break;
case 5:
document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 4:00PM";
break;
case 6:
document.getElementById("hours").innerHTML="Closed Today";
break;
}
} else if (date_formatted >= '3/2/1') { //begin Spring Break
switch (weekDay) {
case 0:
document.getElementById("hours").innerHTML="Closed Today";
break;
case 1:
case 2:
case 3:
case 4:
document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:30PM";
break;
case 5:
document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:00PM";
break;
case 6:
document.getElementById("hours").innerHTML="Closed Today";
break;
}
} else if (date_formatted >= '1/2/1') { //begin Spring semester
switch (weekDay) {
case 0:
document.getElementByID("hours").innerHTML="Today's Hours: 2:00PM to 10:00PM";
break;
case 1:
case 2:
case 3:
case 4:
document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 10:00PM";
break;
case 5:
document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 4:00PM";
break;
case 6:
document.getElementById("hours").innerHTML="Closed Today";
break;
}
} else if (date_formatted >= '1/1/4') { //Winter intercession
switch (weekDay) {
case 0:
document.getElementById("hours").innerHTML="Closed Today";
break;
case 1:
case 2:
case 3:
case 4:
document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:30PM";
break;
case 5:
document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:00PM";
break;
case 6:
document.getElementById("hours").innerHTML="Closed Today";
break;
}
} else {
document.getElementByID("hours").innerHTML="<a href='http://www.deltastate.edu/academics/libraries/libraries-hours-of-operation/' target='_blank'>Click here for Library hours</a>";
}
注意,由于我很懒,并且不想弄清楚您month/week_num/weekDay
字符串的日历日期,因此我只是实现了直接的数字比较,因此它不是最有效的(或最简单的)读书)
我最终要做的几乎是更换每一个
if (date_formatted >= '##/#/#')
与
if (month >= ## && week_num >= # && weekDay >= #)
我还在jsfiddle中添加了一个div#hours,以便您可以实际查看具有不同测试日期的结果,并将document.getElementById("hours")
转换为变量,以提高可读性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.