Zegar w pasku zakładki

Zegar w pasku zakładki
SA
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:3
0

Próbuję stworzyć zegar w TS, jednak pojawia się błąd Expression expected.ts(1109)

Kopiuj
<!DOCTYPE html>
<html lang="pl">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Time</title>
    </head>
    <body>
        <script type="text/javascript" src="watch.ts"></script>
    </body>
</html>
Kopiuj
window.addEventListener("load", counting)
function counting() {

    let dzis = new Date()
    let dzien = dzis.getDate()
    let miesiac = dzis.getMonth() + 1
    let rok = dzis.getFullYear()

    let godzina = dzis.getHours()
    if (godzina < 10) = "0" + godzina

    let minuta = dzis.getMinutes()
    if (minuta < 10) = "0" + minuta

    let sekunda = dzis.getSeconds()
    if (sekunda < 10) = "0" + sekunda

    document.title = dzien + "/" + miesiac + "/" + rok + " | " + godzina + ":" + minuta + ":" + sekunda

    setTimeout("counting()", 1000)
    
}

Bazuje na tym
https://stackoverflow.com/questions/47897118/how-to-make-clock-in-typescript
https://www.spguides.com/typescript-date/

edytowany 1x, ostatnio: sarmata
gk1982
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 2 miesiące
  • Lokalizacja:Łódź
  • Postów:541
0

Brakuje Ci przed = zmiennej

Kopiuj
 let godzina = dzis.getHours()
    if (godzina < 10) godzina = "0" + godzina

    let minuta = dzis.getMinutes()
    if (minuta < 10) minuta = "0" + minuta

    let sekunda = dzis.getSeconds()
    if (sekunda < 10) sekunda = "0" + sekunda

Don't give up learning JavaScript!
It is enjoyable to make things visible which are invisible.
Każdy programista przybywający z innego miasta jest fachowcem.
Anyone who stops learning is old, whether at twenty or eighty.
Anyone who keeps learning stays young.
The greatest thing in life is to keep your mind young.
edytowany 1x, ostatnio: gk1982
SA
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:3
0

Rozwiązałem to w ten sposób, ale ten kod bardzo przypomina styl JavaScript w wersji ES5. W najnowszym standardzie TS 3.9.7 nie powinien ten kod wyglądać całkowicie inaczej?

Kopiuj
window.addEventListener("load", counting)
function counting() {

    let dzis = new Date()
    let dzien = dzis.getDate()
    let miesiac = dzis.getMonth() + 1
    let rok = dzis.getFullYear()

    let godzina: any = dzis.getHours()
    if (godzina < 10) godzina = "0" + godzina

    let minuta: any = dzis.getMinutes()
    if (minuta < 10) minuta = "0" + minuta

    let sekunda: any = dzis.getSeconds()
    if (sekunda < 10) sekunda = "0" + sekunda

    document.title = dzien + "/" + miesiac + "/" + rok + " | " + godzina + ":" + minuta + ":" + sekunda

    setTimeout("counting()", 1000)
    
}
AN
  • Rejestracja:około 19 lat
  • Ostatnio:około 9 godzin
3

Przede wszystkim brakuje średników na końcach linii, możliwe, że przeglądarka, z której korzystasz, prawidłowo interpretuje ten kod pomimo to, ale średniki powinny się znaleźć. Czego oczekujesz po ewentualnej zmianie kodu na TypeScript, że "wygląda całkowicie inaczej"? Rzecz sprowadza się do tego, czy najnowszy TS ma funkcje ułatwiające pzekonwertowanie bieżącej daty i godziny na tekst z odpowiednim formatowaniem. Jeżeli Twój kod jest poprawny w języku TS i realizuje potrzebne Ci zadanie, to nie ma sensu "na siłę" go zmieniać.

M3
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:195
3

W setTimeout musisz przekazać referencję do funkcji a nie wywołaną funkcję
zamiast setTimeout("counting()", 1000) (po co ten string) powinno być setTimeout(counting, 1000).

A ogólnie całość można zrobić prościej. Użyć Date.prototype.toLocaleString(), akurat Wielka Brytania ma takie formatowanie jakiego chcesz.

Kopiuj
function counting() {
  const now = new Date();
  document.title = now.toLocaleString('en-GB');
  setTimeout(counting, 1000);
}
window.addEventListener('load', counting)
edytowany 1x, ostatnio: m31

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.