Javascript-forum
javascript in html einbinden - Druckversion

+- Javascript-forum (https://javascript-forum.de)
+-- Forum: Entwicklung (https://javascript-forum.de/forumdisplay.php?fid=4)
+--- Forum: Javascript (https://javascript-forum.de/forumdisplay.php?fid=6)
+--- Thema: javascript in html einbinden (/showthread.php?tid=2709)



javascript in html einbinden - haiflosse - 01.01.2024

Hallo!
Ich verwende folgenden javascript code in einer externen Datei:
Code:
// Ziel-Datum in MEZ
      var jahr=2024, monat=6, tag=03, stunde=08, minute=00, sekunde=00;
      var zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);

      function countdown() {
        startDatum=new Date(); // Aktuelles Datum

        // Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
        if(startDatum<zielDatum)  {

          var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;

          // Jahre
          while(startDatum<zielDatum) {
            jahre++;
            startDatum.setFullYear(startDatum.getFullYear()+1);
          }
          startDatum.setFullYear(startDatum.getFullYear()-1);
          jahre--;

          // Monate
          while(startDatum<zielDatum) {
            monate++;
            startDatum.setMonth(startDatum.getMonth()+1);
          }
          startDatum.setMonth(startDatum.getMonth()-1);
          monate--;

          // Tage
          while(startDatum.getTime()+(24*60*60*1000)<zielDatum) {
            tage++;
            startDatum.setTime(startDatum.getTime()+(24*60*60*1000));
          }

          // Stunden
          stunden=Math.floor((zielDatum-startDatum)/(60*60*1000));
          startDatum.setTime(startDatum.getTime()+stunden*60*60*1000);

          // Minuten
          minuten=Math.floor((zielDatum-startDatum)/(60*1000));
          startDatum.setTime(startDatum.getTime()+minuten*60*1000);

          // Sekunden
          sekunden=Math.floor((zielDatum-startDatum)/1000);

          // Anzeige formatieren
          //(jahre!=1)?jahre=jahre+" y,  ":jahre=jahre+" y,  ";
          (monate!=1)?monate=monate+" Monate,  ":monate=monate+" Monate,  ";   
          (tage!=1)?tage=tage+" Tage,  ":tage=tage+" Tage,  ";                 
          (stunden!=1)?stunden=stunden+" Std.,  ":stunden=stunden+" Std.,  ";   
          (minuten!=1)?minuten=minuten+" Min.,  ":minuten=minuten+" Min.,  "; 
          if(sekunden<10) sekunden="0"+sekunden;                             
          (sekunden!=1)?sekunden=sekunden+" Sek.":sekunden=sekunden+" Sek.";   

              //document.getElementById("zeit").innerHTML =jahre+monate+tage+stunden+minuten+sekunden;
            document.getElementById("zeit").innerHTML ="noch: "+monate+tage+stunden+minuten+sekunden;

          setTimeout('countdown()',200);
        }
        // Anderenfalls alles auf Null setzen
        else document.getElementById("zeit").innerHTML=
            "0 Monate,  0 Tage,  0 Std.,  0 Min.,  00 Sek.";
      }
in der html Datei binde ich den Code wie folgt ein und rufe die Funktion countdown() beim Laden der html Datei auf.

Code:
<!DOCTYPE html>
<html>
<head>
<script src="zeit.js"></script>
</head>
<body onLoad="countdown(); ">
<div id="zeit"></div>
</body>
</html>
In jedem Browser außer beim Firefox funktioniert dies.
Beim Browser Firefox muss ich den Code von zeit.js direkt in dei html Datei einbinden, dann funktioneirt es auch.
Daher wollte ich fragen, was ich ändern muss, damit es auch im Browser Firefox funktioniert.
Danke


RE: javascript in html einbinden - Sempervivum - 01.01.2024

Hallo, leider kann ich das Problem nicht reproduzieren: Auch im Firefox läuft der Countdown einwandfrei. "Über Firefox" sagt "Ihr Browser ist aktuell".

Mein Editor, Visual Studio Code, beanstandet jedoch die führenden Nullen bei den Werten für das Datum:
Zitat: Octal literals are not allowed. Use the syntax '0o3'.
Lösche mal diese führenden Nullen und beobachte, ob es dann funktioniert.


RE: javascript in html einbinden - haiflosse - 01.01.2024

Danke für die Antwort.
Der Firefox Browser ist aktuell.
Ist gedacht die Zeile zu Beginn entsprechend zu ändern z.b. in:
Code:
var jahr=2024, monat=6, tag=3, stunde=8, minute=0, sekunde=0;

Dies hat leider keine Änderung gebracht.


RE: javascript in html einbinden - Poolgate - 01.01.2024

Hi,

Ich glaube du hast hier ein hoisting Problem. Warum arbeitest du nicht mit let oder const die Gültigkeitsbereiche fest sind. Ich kann mich irren, aber dann hast du auf jeden Fall einen sauberen Code


RE: javascript in html einbinden - haiflosse - 01.01.2024

Danke für die Antworten.
Ich habe jetzt den Firefox Browser bereinigt und es funktioniert jetzt.
Danke