2016-04-28 2 views
0

ich diesen Code haben die Zeit und einige aktuelle Informationen in Spanisch zeigen:Zeige Zeit bis Date(): Es wird nicht mehr aktualisiert wird mit 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); 

Wenn ich das Dokument laden Sie es ok funktioniert. Das Problem, die Zeit ist nie uppted..why?

+3

1) setInterval nimmt einen Rückruf. 2) Sie aktualisieren das Datum nie und es ist immer derselbe Wert wie bei der ersten Zuweisung. –

Antwort

2

Wie von @Travis J gezeigt, setTimeout ersten Parameter sollte eine Funktion sein. (Siehe the doc.)

In Ihrem Fall soll diese Funktion auch das Datum jedes Mal neu berechnen, wenn es aufgerufen wird.

So etwas wie:

// 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); 
Verwandte Themen