2017-01-03 4 views
2

私はすでに、このコードをスタックオーバーフローのポイントにする手助けをしてくれました。これはいつものように高く評価されており、スクリプトは95%あります。JQuery、特定の日付のターゲットが期待どおりに機能しない

ものの

// Message to appear before countdown 
 
var countdownMessage = "Hurry ends in"; 
 

 
//Set time for countdown to count down till - 24 hour clock 
 
var endHour = 20 
 
var endMin = 59 
 

 
//Set days to run from/until - 0 = sunday | 6 = saturday 
 
var startDay = 0 
 
var endDay = 5 
 

 
//Set hours to run from/until - 0 = 12am-12:59am | 10 = 10am-10:59am | 12 = 12pm-12:59pm | 16 = 4pm-4:59pm | 23 = 11pm-11:59pm 
 
var startTime = 6 
 
var endTime = 21 
 
    
 
    
 

 
//////////////////////////* Countdown */////////////////////////////// 
 
$(document).ready(function(){ 
 
    function getSeconds() { 
 
     var now = new Date(); 
 
     var time = now.getTime(); // time now in milliseconds 
 
     var countdownEnd = new Date(now.getFullYear(), now.getMonth(), now.getDate(), (endHour),(endMin)); // countdownEnd 0000 hrs 
 
     var ft = countdownEnd.getTime() + 86400000; // add one day 
 
     var diff = ft - time; 
 
     diff = parseInt(diff/1000); 
 
     if (diff > 86400) { 
 
      diff = diff - 86400 
 
     } 
 
     startTimer(diff); 
 
    } 
 

 
    var timeInSecs; 
 
    var ticker; 
 

 
    function startTimer(secs) { 
 
     timeInSecs = parseInt(secs); 
 
     ticker = setInterval(tick, 1000); 
 
     tick(); // to start counter display right away 
 
    } 
 

 
    function tick() { 
 
     var secs = timeInSecs; 
 
     if (secs > 0) { 
 
      timeInSecs--; 
 
     } else { 
 
      clearInterval(ticker); // stop counting at zero 
 
      //getSeconds(); // and start again if required 
 
     } 
 

 
     var hours = Math.floor(secs/3600); 
 
     secs %= 3600; 
 
     var mins = Math.floor(secs/60); 
 
     secs %= 60; 
 
     var result = ((hours < 10) ? "0" : "") + hours + " hours " + ((mins < 10) ? "0" : "") + mins + " minutes " + ((secs < 10) ? "0" : "") + secs + " seconds"; 
 
     document.getElementById("countdown").innerHTML = (countdownMessage) + " " + result; 
 
    } 
 

 
    $("#countdown").hide(); 
 

 
    ///////////////* Display at certain time of the day *////////////////// 
 

 
    //gets the current time. 
 
    var d = new Date(); 
 
    var day = d.getDay(); 
 

 
    if (day >= (startDay) && day <= (endDay)) { 
 
     if (d.getHours() >= (startTime) && d.getHours() <= (endTime)) { 
 
      $("#countdown").show(); 
 
     } 
 
    } 
 

 
    getSeconds(); 
 
\t 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 

 
<span id="countdown" style="font-weight: bold;">&nbsp;</span>

:働いて、私を混乱させないthatsの

ビットは、日付のみこれらの日付範囲の間に、ターゲットのdivを表示し、これらの時間は、それらに及ぶと言う部分があるあります上記のコードでは、日曜日()から土曜日()までずっと表示するように設定されているので、常に表示する必要がありますが、nただし、土曜日まで()土曜日()までの日付範囲を変更すると、正常に動作します(今日は火曜日です)。

何が起こっているのか、何が間違っているのか説明できる人はいますか?

おかげ

+1

まず、現在の日が日曜日、月曜日、火曜日、水曜日、木曜日、金曜日または土曜日であればカウントダウンを「唯一」表示しようとしていますか?基本的には今日は==週の日、 'if'は常に真でなければなりません。代わりに、時間のブラックホールは何ですか? –

+0

実際にサイトでは、これらの設定のうち2つを予定しています.1つはSun - Monday、もう1つは土曜日のメッセージです。私はちょうどそれをサンにしました - 例ではあなたがコードを試してみてもそれが表示されるはずですが、そうではありません。 – Chobbit

答えて

0

は、あなたはそれが開始日である場合は、それが最後の日であるかどうかをチェックしているように見えるが、それは開始日と終了日の間だ場合はチェックしていません。ですから、あなたの苦情を正しく聞いていれば、その間の日にカウントダウンが表示されません。 (現在の日が実際に値2、またはなどだったのであれば、あなたは、この値は2のために働いていたかもしれません)

if (day == (startDay) || day == (endDay)) { 

は、おそらく次のようになります。気があなたである理由のすべての

if (day >= (startDay) && day <= (endDay)) { 
+0

一言、それは私が見落としていることは簡単だった。バウンティが授与してくれてありがとう。 – Chobbit

関連する問題