JavaScript funktioniert nicht in externer Datei?


25.04.2020, 15:33

Der Timer hat übrigens "null" als Speicher deswegen hatte ich erst Zeit als normalen Text ausgeben wollen aber das geht halt auchn nicht

3 Antworten

Probier mal das Script am Ende vom Body zu laden

Woher ich das weiß:Hobby – Ich programmiere seit ich 9 Jahre alt bin
FelixFeuerdorn 
Fragesteller
 25.04.2020, 15:41

und wie mach ich das?

1
FelixFeuerdorn 
Fragesteller
 25.04.2020, 15:47

Hat sich erledigt! XD Weiß jetzt was du meintest und es hat geholfen Danke

1

Der Dokumentbaum ist noch nicht aufgebaut, wenn das Script ausgeführt wird.

Packe es in einen Event-Handler.

window.onload = function() {
    const timer = document.getElementById('az');
    const zeit = new Date();
    const std = zeit.getHours();
    const m = zeit.getMinutes();
    const sec = zeit.getSeconds();
    const ms = zeit.getMilliseconds();
    const zeit_str = std + ':' + m + ':' + sec + '.' + ms;
    timer.innerHTML = zeit_str;
};

var funktioniert zwar, ist aber inzwischen "deprecated" (veraltet). Um Variablen zu deklarieren verwendet man inzwischen let, um (Laufzeit-)Konstanten zu deklarieren (d. h. wenn Du den Wert hinterher nicht mehr verändern musst), verwendet man const.

Beachte zudem, dass Du in Deinem Script timer.innerHTML auf "zeit" setzt (das ist der String "zeit") anstatt zeit (das ist die Variable).

Das HTML ist übrigens ... "seltsam". Ich würde das ganze eher so schreiben (auch wenn das auch noch nicht ganz "perfekt" ist).

<!DOCTYPE html>
<html>
    <head>
        <title>
            Seitentitel
        </title>
        <style type="text/css" src="design.css"/>
        <script type="text/javascript" src="programm.js">
        </script>
    </head>
    <body>
        <div>
            Aktuelle Uhrzeit: <div id="az" style="display: inline-block"/>
        </div>
    </body>
</html>
FelixFeuerdorn 
Fragesteller
 25.04.2020, 15:55

Das mit dem var hab ich nur genommen weil let logischer nicht funktioniert hat, und das HTML-Documnt habe ich auch so aufgebaut (abgesehen vom Div, welches man eigentlich nicht mehr benutzt) wie du, ich hab das HTML-Document nur aus meiner Datei kopiert und eingefügt.

und ich hab ja meine Frage noch ergänzt das ich zu testzwecken den Timer erstmal auf "Zeit" dem String gesetzt habe.

1
regex9  25.04.2020, 16:39

Das geht nicht:

<style type="text/css" src="design.css"/>

Der Tag gehört nicht zu den selbstschließenden. Um CSS-Dateien einzubinden, müsstest du den link-Tag verwenden. Das type-Attribut brauchst du im Übrigen nicht mehr.

1
NoHumanBeing  26.04.2020, 02:59
@regex9

Jepp, Du hast natürlich recht. Korrekt wäre ...

<link href="design.css" rel="stylesheet" type="text/css"/>

... weiß überhaupt nicht, wie ich auf den anderen Unsinn komme. :-)

0

Dein JavaScript wird sofort ausgeführt wenn du es lädst. Das heißt alle Elemente, die in deinem Skript angesprochen werden ("#az") müssen auch bereits geladen sein. In deinem Fall wird das Element aber nach dem JavaScript geladen. Du solltest dein Skript also ans Ende des Dokuments verschieben wo bereits alle benötigten HTML-Elemente geladen wurden:

   ...
   <script src="Programm.js"></script>
</body>