2016-04-13 2 views
1

Ich möchte eine Uhr mit Javascript machen.Wie eine Anzeige einer Uhr synchron mit der Echtzeit zu machen

Ich möchte, dass die Sekunden und sogar Millisekunden in Echtzeit angezeigt werden, wie eine echte Uhr. Sie können sehen, wie sich die Zahlen in Echtzeit ändern.

Ich dachte über eine Schleife, wo eine Funktion selbst ruft den Schreibbefehl wie diese

function countdown (i) { 
    if (i == undefined) { 
    i = 10; 
    } 

    if (i > 0) { 
    i--; 
    var timeout = window.setTimeout("document.getElementById("thedate").innerHTML ... , 1000); 
    } 
} 
countdown(); 

Und wie wiederholen kann ich es machen, dass die Funktion sich wie die reale Uhr in der gleichen Geschwindigkeit wiederholt Ist das überhaupt möglich?

Wenn ich nur das Schrittintervall von setTimeout auf 1 setze und die Funktion 1000 mal pro Sekunde wiederhole, ist es vielleicht asynchron zu der von mir zuvor definierten Echtzeit von getDate, habe ich recht?

Die Hauptfrage ist: Wie kann ich meine Wiederholungsfunktion synchron mit der Echtzeit bekommen?

+1

Haben Sie sich die 'setInterval()' Funktion angesehen? Ich denke, das ist, was Sie hier brauchen: http://mdn.beonex.com/en/DOM/window.setInterval.html –

+0

Auch ist es wahrscheinlich besser, eine tatsächliche anonyme Funktion an 'setTimeout()' statt einer Zeichenfolge von code –

+1

Mit setTimeout() können Sie nicht 1000 pro Sekunde ausführen: Wenn Sie eine Verzögerung von weniger als 4 ms übergeben, wird sie automatisch auf 4 ms gerundet. In jedem Fall ist die Verzögerung nicht garantiert, so dass Sie für eine genaue Uhr die Zeit erneut von einem Date-Objekt bei jedem Timeout erhalten müssen. – nnnnnn

Antwort

2

Verwenden Sie die setInterval Web Api für dieses Problem:

var intervalID = window.setInterval(myCallback, 1000); 

function myCallback() { 
    // Gets called every second 
} 

Documentation for the setInterval() method

0

Stattdessen Endlosschleife mit Funktion erstellen, verwenden Sie nur setInterval(function() {}, 1000);

Verwandte Themen