Powtarzanie fukcji co sekundę

0

witam. to jest kod na wypisanie aktualnego czasu:

var curDateTime = new Date();
var curHour = curDateTime.getHours();
var curMin = curDateTime.getMinutes();
var curSec = curDateTime.getSeconds();
var curTime = 
((curHour < 10) ? "0" : "") + curHour + ":" 
+ ((curMin < 10) ? "0" : "") + curMin + ":" 
+ ((curSec < 10) ? "0" : "") + curSec;
document.write(curTime); 

co mam zrobić by procedura ta powtarzała się co 1 sekundę ?

0

settimeout/setinterval. Wypadałoby chociaż język umieścić gdzieś (choćby w tagach).

0

Tylko zauważ, że to Ci co około sekundę będzie dopisywało do dokumentu aktualny czas. Nie będzie to wyglądało jak aktualizujący się zegar. Używasz document.write i każde wywołanie tej funkcji dopisze do dokumentu kolejny ciąg znaków z aktualnym czasem.

Zamiast document.write, poleciłbym utworzenie sobie w HTML-u jakiegoś elementu, pobranie go za pomocą metod DOM (np. document.getElementById) i wsadzanie aktualnego czasu do środka tego elementu za pomocą innerHTML. Wtedy zegar będzie "chodził" w określonym miejscu.

Aha: jeśli do setTimeout lub setInterval przekażez czas 1000 [ms], to czasami zegar może zgubić sekundę. Tj. wyświetli najpierw np. 00:00:05, a następnie od razu 00:00:07. To dlatego, że nie ma gwarancji, iż funkcja podana do setTimeout lub setInterval wywoła się dokładnie po żądanym czasie. Wykona się (iirc) CO NAJMNIEJ po tym czasie. Być może po nieco dłuższym, szczególnie jeśli na stronie działałyby inne skrypty -- takie procesorożerne. I wtedy zegar może nie zdążyć wyświetlić którejś sekundy, choć wciąż będzie chodził dobrze. Prostym rozwiązaniem jest aktualizacja zegara np. co pół sekundy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1