2017-09-01 15 views
1

曜日と時刻によって異なるdivを表示するスクリプトがあります。彼はうまくいく。私はそれを変更する必要があります。私は毎日異なる営業時間を設定したいと思います。これどうやってするの?助けてください。木曜日午後6時00
8:00から午前8時からオープン水曜日午前16時
8:00から午後4時
にオープン営業時間 - DIVは曜日と時間に依存します

月曜日火曜日オープン8からオープン: 00私のスクリプト

13時

8:00からオープン
日曜日近い土曜日8:00から午前16時00
にオープン金曜日
00〜18:

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(ステータス=== 'オープン' /ステータスを使用することができます! == 'open') '。あなたは 'if' ;-)を取り除くことができます – Cerbrus

答えて

1

にif文を編集します。

また、「状態」変数を文字列ではなくブール値を格納するように変更しました。なぜなら、「はい」または「いいえ」という質問に効果的に答えているからです。偽ですか?ニット - ピカイ、しかし、この方法はより正確です。文字列の比較はぎこちない。

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

どうしたらいいですか:(https://jsfiddle.net/qpd58f5x/ – Mousebucks

+0

@MousebucksスクリプトやCSSは外部リソースとして使用されるため、実際にはHTMLボックス内にリンクされていないため、最新のJSFiddle https://jsfiddle.net/qpd58f5x/1/ – Adriani6

+0

@Mousebucksを参照してください。https://jsfiddle.net/qpd58f5x/4/ – Bucket

0

あなたは配列内のスケジュールを置くことができるとウィッヒ日チェックjsutあなたは上であり、現在の時刻が配列

+0

サンプルコードを教えてもらえますか? – Mousebucks

+1

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

1

使用してAに開始時刻と終了時刻の間にあるかどうかを確認2次元配列

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

[0,0]の日は完全閉鎖と見なされます。 そして、あなたは、各曜日を表し、その中のオープン/クローズ時間を含むように配列を作成することができます

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

これは何時間も働くかもしれませんが、分単位ではありません。 – Bucket