Witam. Na mojej stronie internetowej oprócz zegarka napisanego w js zamieściłem skrypt wypisujący dzień, miesiąc i rok. Chciałem, zeby skrypt odświeżył się tylko raz o godzinie 0:00. Na razie co do odświeżania kod wygląda tak:
var aktualna=new Date()
var godzina = aktualna.getHours();
if(godzina == 0){
timedRefresh(3600000);
}
Proszę o pomoc w poprawieniu tego kodu
Można to rozwiązać trochę inteligentniej - po załadowaniu strony sprawdzasz aktualną godzinę, obliczasz ile sekund zostało do północy i na tej podstawie ustalasz wartość dla setTimeout(). Sprawdzenie wykonuje się tylko raz, zmiana jest zawsze na czas, a js nie mieli co jakiś czas jednego bezsensownego warunku.
ethanak pisze:przecież jak ma zegarek to i tak mu mieli...
No właśnie nie - zaproponowałeś dorzucenie kolejnego warunku, który będzie sprawdzany co sekundę. Po co, skoro już na samym początku wiemy że przez X godzin go nie spełni?
No nie wiem czy taki czytelny, skoro to jest problem, to prawdopodobnie data jest traktowana jako osobny element. W tym momencie do kodu obsługującego godzinę doklejasz kod obsługujący datę - mieszasz 2 elementy. Poza tym nie wiem czemu dodanie kodu sprawdzającego raz datę miałby być mniej czytelny - objętościowo wychodzi niemal to samo, a logika też nie jest zbyt skomplikowana.
na telefonie teraz nie napiszę, ale postaram się w domciu jskiegoś snipetka spłodzić - ocenisz sam. jeśli będzie do niczego - nie obrażę się, ostatnio rzadko coś większego w js tworzę.