2016-04-28 6 views
0

私はスペイン語での時間といくつかの日付情報を表示するには、このコードを持っている:私は、ドキュメントを読み込むと、それがうまく動作表示時間は():それはのsetIntervalを使用して更新されていない()

var date = new Date(); 

    var hour = date.getHours().toString(); 
    var minutes = date.getMinutes().toString(); 

    var day = date.getDate(); 

    switch (date.getMonth()) { 
     case 0: 
     month = "Ene"; 
     break; 
     case 1: 
     month = "Feb"; 
     break; 
     case 2: 
     month = "Mar"; 
     break; 
     case 3: 
     month = "Abr"; 
     break; 
     case 4: 
     month = "May"; 
     break; 
     case 5: 
     month = "Jun"; 
     break; 
     case 6: 
     month = "Jul"; 
     break; 
     case 7: 
     month = "Ago"; 
     break; 
     case 8: 
     month = "Sep"; 
     break; 
     case 9: 
     month = "Oct"; 
     break; 
     case 10: 
     month = "Nov"; 
     break; 
     case 11: 
     month = "Dic"; 
     break; 
    } 

    if (hour.length == 1) { 
    hour = '0' + hour; 
    } 
    if (minutes.length == 1) { 
    minutes = '0' + minutes; 
    } 
    setInterval($('#hour').html('<b>' + hour + ':' + minutes + '<br>' + '<span class="day">' + day + ' ' + month + '</span></b>'), 60000); 

。時間の問題は決してうまくいかない。なぜ?

+3

1)のsetIntervalは、コールバックを取ります。 2)あなたは日付を決して更新しないので、最初に割り当てられたときと同じ値になります。 –

答えて

2

@Travis Jが指しているように、setTimeout最初のパラメータは関数でなければなりません。 (the docを参照してください。)

この場合、この関数は呼び出されるたびに日付を再計算する必要があります。

だから、のようなもの:

// Define a function that will update the html from current date 
function updateDate() { 
    var date = new Date(); 

    var hour = date.getHours().toString(); 
    var minutes = date.getMinutes().toString(); 

    var day = date.getDate(); 

    switch (date.getMonth()) { 
     case 0: 
     month = "Ene"; 
     break; 
    ... 
    } 

    if (hour.length == 1) { 
    hour = '0' + hour; 
    } 
    if (minutes.length == 1) { 
    minutes = '0' + minutes; 
    } 

    // Update the page content 
    $('#hour').html('<b>' + hour + ':' + minutes + '<br>' + '<span class="day">' + day + ' ' + month + '</span></b>' 
} 

// Call the function the first time (setInterval will not call it right away) 
updateDate(); 

// Schedule the function to be called every minute after that 
setInterval(updateDate, 60000);