0

日付/時刻への単純なカウントダウンタイマーを作成しようとしています。

私は現在、正常に動作しているスクリプトに次の日数しかありません。

<div id="countdown">

today = new Date();
BigDay = new Date("March 29, 2013");
msPerDay = 24 * 60 * 60 * 1000 ;
timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
document.write(daysLeft + " days to go!");

</div>

現在、完全なカウントダウン タイマー (時間、分、秒) を作成しようとしており、次のスクリプトを作成しました。ページに html が表示されません。

var today = new Date();
var BigDay = new Date("29 03 2013, 14:30:00");
var msPerDay = 24 * 60 * 60 * 1000 ;
var timeLeft = (BigDay.getTime() - today.getTime());
var e_daysLeft = timeLeft / msPerDay;
var daysLeft = Math.floor(e_daysLeft);
var e_hrsLeft = (e_daysLeft - daysLeft)*24;
var hrsLeft = Math.floor(e_hrsLeft);
var e_minsLeft = (e_hrsLeft - hrsLeft)*60;
var minsLeft = Math.floor(e_minsLeft);
var e_secsLeft = (e_minsLeft - minsLeft)*1000;
var secsLeft = Math.floor(e_secsLeft);
var timeString = daysLeft + " : " + hrsLeft + " : " + minsLeft + " : " + secsLeft;

$('document').ready(function(){

window.setInterval(function(){
$('#countdown').html(timeString);
}, 1000);

});

何が問題なのかわからない。最初のスクリプトは html 内に含まれており、2 番目は外部の js ファイルです。

編集: html が表示されるようになりましたが、すべての値が NaN として表示されます。

4

3 に答える 3

12

上記の構文エラー以外に、論理エラーもあります。タイムアウト関数内で残りの時間文字列を計算する必要があります。それ以外の場合、値はページの読み込み時にのみ計算されます。

$(function(){
    var BigDay = new Date("29 Mar 2013, 14:30:00");
    var msPerDay = 24 * 60 * 60 * 1000 ;


    window.setInterval(function(){
        var today = new Date();
        var timeLeft = (BigDay.getTime() - today.getTime());

        var e_daysLeft = timeLeft / msPerDay;
        var daysLeft = Math.floor(e_daysLeft);

        var e_hrsLeft = (e_daysLeft - daysLeft)*24;
        var hrsLeft = Math.floor(e_hrsLeft);

        var e_minsLeft = (e_hrsLeft - hrsLeft)*60;
        var minsLeft = Math.floor(e_minsLeft);

        var e_secsLeft = (e_minsLeft - minsLeft)*60;
        var secsLeft = Math.floor(e_secsLeft);


        var timeString = daysLeft + " : " + hrsLeft + " : " + minsLeft + " : " + secsLeft;
        $('#countdown').html(timeString);
    }, 1000);
})

デモ:フィドル

于 2013-03-14T14:59:21.863 に答える
0

ここにエラーがあります:var minsLeft = Math.floor((e_minsLeft);

最初のかっこが閉じていません。var minsLeft = Math.floor(e_minsLeft);

于 2013-03-14T14:53:25.187 に答える
0

毎秒 timeString 計算を実行しなかったため、 #countdown div 内のテキストは決して変更されません

于 2013-03-14T14:53:57.633 に答える