Zegar w pasku zakładki

0

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

<!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>
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/que[...]w-to-make-clock-in-typescript
https://www.spguides.com/typescript-date/

0

Brakuje Ci przed = zmiennej

 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
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?

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)

}
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ć.

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.

function counting() {
  const now = new Date();
  document.title = now.toLocaleString('en-GB');
  setTimeout(counting, 1000);
}
window.addEventListener('load', counting)

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