2017-10-30 14 views
3

Jon Duckettの書籍「Javascript & jQuery:対話型フロントエンド開発」からjQueryを学習しています。今まで私が本からコピーしたコードはすべてスムーズに動いているようですが、このコードでは私は困惑しています。基本的に何が起こるかは、HTMLのリスト項目をクリックすると、liの隣にクリックイベントが発生した日付が表示されます。それは動作しますが、日付はオブジェクトのクリック日の代わりに1969年12月31日を表示します。私はこれを修正する方法を読んできたが、私は運がなかった。この同じ結果を得るための別の方法はありますか?それともコードに何か不足していますか? jQueryのスニペットとjsfiddleリンクjQuery Date()関数は、現在の日付の代わりに1969年12月31日を返します。

は以下の通りです: jsFiddle

$(function(){ 
    $('li').on('click', function(e){ 
    $('li span').remove(); 
    var date = new Date(); 
    date.setTime(e.timeStamp); 
    var clicked = date.toDateString(); 
    $(this).append('<span class="date">' + clicked + ' ' + e.type + '</span>'); 
    }); 
}); 

答えて

7

e.timeStamp戻りDOMHighResTimeStampないDOMTimeStampためであること。それは非常に少ないです。そのため、日付は1969年12月31日にデフォルトとして設定されます。

new Date()、新しい日付オブジェクトを現在の日付と時刻で作成します。あなたはここで明示的にSETTIMEする必要はありません。

var date = new Date(); 
var clicked = date.toDateString(); 
+0

ああ、完璧!私はその行のコードを削除する以外はすべてを試しました。ありがとうございました! – photogcoder

+1

そのようなことはありません。参考文献http://api.jquery.com/event.timeStamp/ jQueryイベントには 'timeStamp'プロパティがあります。 – Roomy

+1

@Roomy:ありがとう。答えを更新しました。 –

1

ラインdate.setTime(e.timeStamp);を削除し、物事が正しく動作:

$(function(){ 
    $('li').on('click', function(e){ 
     $('li span').remove(); 
     var date = new Date(); 
     var clicked = date.toDateString(); 
     $(this).append('<span class="date">' + clicked + ' ' + e.type + '</span>'); 
    });   
}); 
関連する問題