Problem z zegarem

0

Witam. Mam w htmlu prosty paragraf w którym wyświetlam aktualną godzinę. Robię to w nie pierwszym projekcie i zawsze było ok ale teraz mam problem z dziwnym freezem. Zawsze gdy liczba sekund dochodzi do 59 to nagle przeskakuje na 1. sekundę nowej minuty i freezuje mi do 10. sekundy a potem idzie normalnie, i tak w kółko, dochodzi do 59., przeskakuje na 1. sekunde i freezuje do 10.
Wrzucam kodzik:

function leadingZero(i) {
return (i < 10) ? '0' + 1 : i;
}

function showTime() {
const currentDate = new Date();
const time = leadingZero(currentDate.getHours()) + ":" + leadingZero(currentDate
.getMinutes()) +
":" + leadingZero(currentDate.getSeconds());

document.querySelector('.fs-timer').innerHTML = time;
}
setInterval(showTime, 1000);
2

https://jsfiddle.net/bp1tnkzh/ - rzuć okiem, czy jest OK. Moim zdaniem ta wersja działa poprawnie.

Problemem była funkcja dodająca zero na początku. Lekko zmieniłem i w poniższej postaci wydaje się działać poprawnie. W ogóle taka porada - nie musisz stosować uproszczonego zapisu warunkowego, takie "zwykłe" if ...then jest znacznie czytelniejsze. Zwłaszcza nie polecam czegoś takiego osobom początkującym, bo oszczędność miejsca jest znikoma, za to masz wiele możliwości rypnięcia się ;)

function leadingZero(i) {
	if (i<10) return '0'+i; else return i;
}

Poza tym czemu skorzystałeś z document.querySelector a nie z (moim zdaniem bardziej odpowiedniego) document.getElementById? Ma to jakieś uzasadnienie (o którym nie wiem), czy po prostu "tak wyszło"? ;)

4

No bo masz:

return (i < 10) ? '0' + 1 : i;

popraw na:

return (i < 10) ? '0' + i : i;

A tak swoją drogą, to osobiście nie jestem zwolenniczką "hackerskiej składni".
Utrudnia czytanie i analizę kodu.

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