2017-08-17 9 views
-2

ここに自分のプログラムがあります。私はカウントダウンタイマーのための実行コードを持っています私の問題は、投票期間が終わったときに私は投票終了を表示する代わりに、常に投票を開いて表示することです。カウントダウンタイマーを設定し、投票を開いた後、投票期間の後に表示する投票が終了する

<script> 
// Set the date we're counting down to 
var countDownDate = new Date("<?php echo $countdown['datestart']; ?>").getTime(); 
var endDate = new date("<?php echo $countdown['dateend']; ?>").getTime(); 
// Update the count down every 1 second 
var x = setInterval(function() { 

// Get todays date and time 
var now = new Date().getTime(); 

// Find the distance between now an the count down date 
var distance = countDownDate - now; 

// Time calculations for days, hours, minutes and seconds 
var days = Math.floor(distance/(1000 * 60 * 60 * 24)); 
var hours = Math.floor((distance % (1000 * 60 * 60 * 24))/(1000 * 60 * 60)); 
var minutes = Math.floor((distance % (1000 * 60 * 60))/(1000 * 60)); 
var seconds = Math.floor((distance % (1000 * 60))/1000); 

// Output the result in an element with id="demo" 
document.getElementById("demo").innerHTML = days + "d " + hours + "h " 
+ minutes + "m " + seconds + "s "; 

// If the count down is over, write some text 
if (distance < 0) { 
    clearInterval(x); 
    document.getElementById("demo").innerHTML = "Voting now Opens"; 
} 

// If date end is over display some text 
    //display voting period ends 

}, 1000); 
</script> 
+0

PHPを表示する必要はありません。それを解析するだけでなく、ここに入力ミスもあります。コードは実行されません(例: 'new date'は' new Date'でなければなりません)。 –

+0

あなたは今まで投票を閉めようとしましたか?投票が開いた後に 'setTimeout()'を追加するか、現在の時刻を終了時刻までチェックすることができますか?時間/日付が終了時刻/日付以上の場合... – NewToJS

+0

setTimeout()を実行するには?私は投票が開かれた。 var endDateがNOWよりも大きいときに投票終了を表示したい –

答えて

0

最終投票メッセージを追加するには、投票が終了するまで間隔を継続する必要があります。少し簡単にするために、if ... else if ... elseを使用してコードを3つのセクションに分割しました。これらのそれぞれにおいて、私たちはそのシナリオのそれぞれの表示を扱います。必要がない場合に計算を行わないという追加の利点があります。

distance> 0の場合、投票は開始されていません。 endDate>の場合、投票は終了していません。私は、PHPの出力がこのシナリオの正確な日付になると仮定しています。 Read more。 他のシナリオとは、投票が終了したことを意味します。一見

<script> 
// Set the date we're counting down to 
var countDownDate = new Date("<?php echo $countdown['datestart']; ?>").getTime(); 
var endDate = new Date("<?php echo $countdown['dateend']; ?>").getTime(); 

// Update the count down every 1 second 
var x = setInterval(function() { 

    // Get todays date and time 
    var now = new Date().getTime(); 

    // Find the distance between now an the count down date 
    var distance = countDownDate - now; 

    if (distance > 0) { 
    // Time calculations for days, hours, minutes and seconds 
    var days = Math.floor(distance/(1000 * 60 * 60 * 24)); 
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24))/(1000 * 60 * 60)); 
    var minutes = Math.floor((distance % (1000 * 60 * 60))/(1000 * 60)); 
    var seconds = Math.floor((distance % (1000 * 60))/1000); 

    // Output the result in an element with id="demo" 
    document.getElementById("demo").innerHTML = days + "d " + hours + "h " 
+ minutes + "m " + seconds + "s "; 
    } 
    else if (endDate > now) { 
    // If the count down is over, write some text 
    document.getElementById("demo").innerHTML = "Voting now Opens"; 
    } 
    else { 
    // If date end is over display some text 
    //display voting period ends 
    document.getElementById("demo").innerHTML = "Voting Ended"; 
    clearInterval(x); 
    } 
}, 1000); 
</script> 
+0

ありがとうございました+1 –

0

、私はあなたの「endDateに」行がエラーを持っていることがわかります。

var endDate = new date(..... 

すなわちVAR countDownDateのためであるとして、それは資本金日「D」でなければなりません
var endDate = new Date(..... 

コードの残りの部分が正しいとします(それは問題ありません)。

あなたの質問から、次の関数が常にfalseに解決され、したがって 'x'間隔をクリアして投票が開かれていることを示す囲まれたコードは決して解けない場合、解読するのは簡単です。

if (distance < 0) {...} 

私はどうなることconsole.log(countDownDate);console.log(now);、なぜないこともconsole.log(distance);理想的immidiately宣言の後にある場合:

// Find the distance between now an the count down date 
var distance = countDownDate - now; 

あなたがconsole.log()機能を使用する方法がわからない場合は、以下のリンクを参照してください。 :https://developers.google.com/web/tools/chrome-devtools/console/

関連する問題