2017-09-01 23 views
1

我有一个脚本,根据一周中的某一天和一天的时间显示不同的div。他运作良好。我需要修改它。我想每天设置不同的开放时间。我怎样才能做到这一点?请帮忙。开放时间 - DIV取决于星期几和小时

周一8:00开放到16:00
周二营业时间为08:00至16:00
周三开放时间为8:00至18:00
周四营业时间为8: 00〜18:00
周五营业时间为08:00至16:00
周六接近
周日从8:00开放至13:00

我的脚本:

var d = new Date(); 
 
var dayOfWeek = d.getDay(); 
 
var hour = d.getHours(); 
 
var mins = d.getMinutes(); 
 
var status = 'open'; 
 

 
if (dayOfWeek !== 6 && dayOfWeek !== 0 && hour >= 9 && hour <= 15){ 
 
    if (hour=='9' && mins < '00'){ 
 
     status = 'closed'; 
 
    }else if (hour=='15' && mins > '30'){ 
 
     status = 'closed'; 
 
    }else{ 
 
     status = 'open'; 
 
    } 
 
}else{ 
 
    status = 'closed'; 
 
} 
 

 
if (status=='open') { 
 
    $('.hours').show(); 
 
    $('.closed').hide(); 
 
}else{ 
 
    $('.hours').hide(); 
 
    $('.closed').show(); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="hours">We are OPEN</div> 
 
<div class="closed">We are CLOSED</div>

+0

建议无关你的问题:取代'.show()'和'.hide()',你可以使用'.toggle(状态=== '开放'/状态! =='打开')'。然后你可以删除'if' ;-) – Cerbrus

回答

1

您可以构建一个数组来表示一周的每一天,包括在它的开/关时间。

此外,我会改变你的“状态”变量来存储布尔值,而不是字符串,因为它有效地回答“是或否”的问题 - 为什么不把它称为“打开”并使其值为真或假?挑剔的,但这种方式更正确。字符串比较笨重。

var openHours = [ 
    { 
     openHour: 8, 
     openMinute: 0, 
     closeHour: 13, 
     closeMinute: 0 
    }, 
    { 
     openHour: 9, 
     openMinute: 0, 
     closeHour: 17, 
     closeMinute: 30, 
    }, 
    { 
     openHour: 9, 
     openMinute: 0, 
     closeHour: 17, 
     closeMinute: 30, 
    }, 
    { 
     openHour: 9, 
     openMinute: 0, 
     closeHour: 17, 
     closeMinute: 30, 
    }, 
    { 
     openHour: 9, 
     openMinute: 0, 
     closeHour: 17, 
     closeMinute: 30, 
    }, 
    { 
     openHour: 9, 
     openMinute: 0, 
     closeHour: 17, 
     closeMinute: 30, 
    }, 
    { 
     openHour: -1, 
     openMinute: -1, 
     closeHour: -1, 
     closeMinute: -1, 
    } 
]; 

var d = new Date(); 
var dayOfWeek = d.getDay(); 
var hour = d.getHours(); 
var mins = d.getMinutes(); 
var open = true; 
var todayHours = openHours[dayOfWeek]; 

if (hour >= todayHours.openHour && hour <= todayHours.closeHour) { 
    if ((hour==todayHours.openHour && mins < todayHours.openMinute) || (hour==todayHours.closeHour && mins > todayHours.closeMinute)) { 
     open = false; 
    } else { 
     open = true; 
    } 
} else { 
    open = false; 
} 

if (open) { 
    $('.hours').show(); 
    $('.closed').hide(); 
} else { 
    $('.hours').hide(); 
    $('.closed').show(); 
} 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div class="hours">We are OPEN</div> 
<div class="closed">We are CLOSED</div> 
+0

不,t工作:(https://jsfiddle.net/qpd58f5x/ – Mousebucks

+0

@Mousebucks它不工作,因为脚本和CSS作为外部资源,所以你不实际链接它们在HTML框中,你没有' t包括需要的CSS。请参阅更新的JSFiddle https://jsfiddle.net/qpd58f5x/1/ – Adriani6

+0

@Mousebucks更新:https://jsfiddle.net/qpd58f5x/4/ – Bucket

0

你可以把日程安排在一个阵列和仅仅指刚检查至极的一天是你,并检查当前时间的开始和结束时间之间入阵

+0

你可以给我们一个示例代码吗? – Mousebucks

+1

var disponibility = array(array(8,16),array(9,17),......); – Neil

1

使用二维数组

// Example days 
var days = [[9, 15],[8, 14],[7, 13],[6,12],[5,11],[0,0],[0,0]]; 

一天[0,0]将被视为完全关闭。 和编辑if语句

if (hour >= days[dayOfWeek][0] && hour < days[dayOfWeek][1]){ //.. 
+0

这可能会工作几个小时,但它不占分钟。 – Bucket

相关问题