Übung: Hinzufügen von Interaktivität mit JavaScript

Abgeschlossen

JavaScript (bzw. ECMAScript) ist eine Programmiersprache, mit der Sie Ihrer Webseite Interaktivität hinzufügen können.

Beispielsweise können Sie JavaScript verwenden, um das Verhalten zu definieren, das beim Auswählen einer Schaltfläche durch einen Benutzer ausgelöst wird, z. B. dem Öffnen eines Popupfensters. Mit JavaScript können Sie einer Webseite Inhalte hinzufügen oder diese daraus entfernen, ohne sie erneut zu laden.

In dieser Lerneinheit richten Sie eine JavaScript-Beispieldatei für Ihre Webseite ein. Sie erstellen darin eine Schaltfläche, um zwischen hellen und dunklen Designs zu wechseln. Anschließend fügen Sie die Schaltfläche dem JavaScript-Code an, der den eigentlichen Designwechsel durchführt. Schließlich überprüfen Sie das fertiggestellte Projekt mithilfe der Entwicklertools Ihres Browsers.

Wie CSS können Sie JavaScript direkt zur HTML-Datei hinzufügen, aber eine empfohlene bewährte Methode besteht darin, JavaScript in einer separaten Datei zu speichern. Wenn Sie Ihren JavaScript-Code zu einer separaten Datei hinzufügen, ist es einfacher, ihn auf mehreren Webseiten wiederzuverwenden. Sie können beispielsweise eine Popupwarnung erstellen, indem Sie den folgenden Code an einer beliebigen Stelle Ihrer Webseiten hinzufügen:

<script>alert('Hello World')</script>

Es ist jedoch besser Ihren JavaScript-Code einer separaten Datei hinzuzufügen, die mit jeder Datei verknüpft werden kann, die Ihre persönliche Funktionalität benötigt.

Das HTML-Skripttag <script> ermöglicht es uns, eine Verknüpfung mit einer externen JavaScript-Datei zu erstellen. Auf diese Weise konfigurieren Sie Ihre Web-App in dieser Übung.

  1. Öffnen Sie in Visual Studio Code die Datei index.html.

  2. Suchen Sie das schließende </body> Element, und platzieren Sie den Cursor auf einer neuen Zeile darüber. Geben Sie script:src ein, und klicken Sie die Eingabetaste. Die öffnenden und schließenden Tags für ein <script>-Element werden Ihrem Code hinzugefügt.

  3. Modifizieren Sie das <script>-Element, um Ihre app.js-Datei zu laden, wie im folgenden Beispiel gezeigt wird. Stellen Sie sicher, dass es sich nach dem schließenden </ul>-Element für die Liste befindet.

    ...
    <ul>
      <li class="list">Add visual styles</li>
      <li class="list">Add light and dark themes</li>
      <li>Enable switching the theme</li>
    </ul>
    <script src="app.js"></script>
    ...
    

Das <script>-Element sollte im <head> oder an einer beliebigen Stelle im <body> platziert werden. Wenn Sie allerdings das <script>-Element am Ende des <body>-Abschnitts platzieren, wird zuerst der gesamte Seiteninhalt auf dem Bildschirm angezeigt werden, und erst anschließend das Skript geladen.

Hinzufügen von Fehlertoleranz

  1. Fügen Sie der HTML-Datei ein <noscript>-Element nach dem schließenden </script>-Tag hinzu, das verwendet werden kann, um eine Nachricht anzuzeigen, wenn JavaScript deaktiviert ist.

    <script src="app.js"></script>
    <noscript>You need to enable JavaScript to view the full site.</noscript>
    

    Das Hinzufügen des <noscript>-Elements stellt ein Beispiel für Fehlertoleranz oder graduelle Leistungsminderung dar. Mithilfe des <noscript>-Elements kann Ihr Code erkennen und planen, wann ein Feature nicht unterstützt oder verfügbar ist.

Festlegen des Strict-Modus

JavaScript wurde so konzipiert, dass es leicht zu erlernen ist und ermöglicht, dass bestimmte Fehler vom Entwickler gemacht werden. Beispielsweise löst JavaScript keinen Fehler aus, wenn Sie eine falsch geschriebene Variable verwenden, und erstellt stattdessen eine neue globale Variable. Wenn Sie damit beginnen, JavaScript zu lernen, ist es praktisch, weniger Fehler zu haben. Dies kann jedoch dazu führen, dass Code geschrieben wird, der für Browser schwieriger zu optimieren und für Sie schwieriger zu debuggen ist.

Wechseln Sie in den Strict-Modus, um nützlichere Fehlermeldungen zu erhalten, wenn Sie Fehler machen.

  • Öffnen Sie in Visual Studio Code die Datei app.js, und geben Sie Folgendes ein.

    'use strict';
    

Hinzufügen einer Schaltfläche

Benutzer benötigen eine Möglichkeit, zwischen den hellen und dunklen Designs auf Ihrer Webseite umschalten zu können. In dieser Übung implementieren Sie diese Funktionalität mit den HTML <button>-Element.

  1. Fügen Sie in der HTML-Datei (index.html) ein <button>-Element hinzu. Platzieren Sie die Schaltfläche in einem <div>-Element, und fügen Sie dies direkt nach dem Ende der Liste hinzu (</ul>).

    ...
    <ul>
      <li class="list">Add visual styles</li>
      <li class="list">Add light and dark themes</li>
      <li>Enable switching the theme</li>
    </ul>
    <div>
      <button class="btn">Dark</button>
    </div>
    <script src="app.js"></script>
    ...
    

    Beachten Sie, dass das <button>-Element in diesem Beispiel über das Klassen-Attribut verfügt, das Sie zum Anwenden von CSS-Formatvorlagen verwenden können.

  2. Speichern Sie Ihre Änderungen an der HTML-Datei über die Tastenkombination STRG+S (Windows) oder BEFEHL+S (macOS).

  3. Fügen Sie der CSS-Datei (main.css) eine neue Regel mit einer .btn-Klassenauswahl für Ihre HTML-Schaltfläche hinzu. Um die Schaltflächenfarben von den allgemeinen hellen oder dunklen Designfarben zu unterscheiden, legen Sie in dieser Regel die color- und background-color-Eigenschaften fest. Wenn Ihre Seite angezeigt wird, setzen diese .btn-Eigenschaften die in der body-Regel Ihrer CSS-Datei festgelegten Standardeigenschaften außer Kraft.

    .btn {
      color: var(--btnFontColor);
      background-color: var(--btnBg);
    }
    
  4. Ändern Sie dann die .btn-Regel, um einige Formatvorlagen für Größe, Form, Aussehen und Platzierung der Schaltfläche hinzuzufügen. Das folgende CSS erzeugt eine runde Schaltfläche rechts neben der Seitenüberschrift.

    .btn {
      position: absolute;
      top: 20px;
      left: 250px;
      height: 50px;
      width: 50px;
      border-radius: 50%;
      border: none;
      color: var(--btnFontColor);
      background-color: var(--btnBg);
    }
    
  5. Aktualisieren Sie dann das CSS für das helle und das dunkle Design. Definieren Sie die neuen Variablen --btnBg und --btnFontColor, um die schaltflächenspezifische Hintergrund- und Schriftfarbe festzulegen.

    .light-theme {
      --bg: var(--green);
      --fontColor: var(--black);
      --btnBg: var(--black);
      --btnFontColor: var(--white);
    }
    
    .dark-theme {
      --bg: var(--black);
      --fontColor: var(--green);
      --btnBg: var(--white);
      --btnFontColor: var(--black);
    }
    
  6. Speichern Sie Ihre Änderungen an Ihrer CSS-Datei über die Tastenkombination STRG+S (Windows) oder BEFEHL+S (macOS).

Hinzufügen eines Ereignishandlers

Damit die Schaltfläche etwas bewirkt, wenn Sie sie darauf klicken, benötigen Sie in Ihrer JavaScript-Datei einen Ereignishandler. Ein Ereignishandler ist eine Möglichkeit, eine JavaScript-Funktion auszuführen, wenn ein Ereignis auf der Seite auftritt. Fügen Sie für die Schaltfläche einen Ereignishandler für das click-Ereignis hinzu. Die Ereignishandlerfunktion wird ausgeführt, wenn das click-Ereignis auftritt.

Bevor Sie den Ereignishandler hinzufügen können, benötigen Sie einen Verweis auf das Schaltflächenelement.

  1. Verwenden Sie dafür document.querySelector in Ihrer JavaScript-Datei (app.js), um den Tastenverweis abzurufen.

    const switcher = document.querySelector('.btn');
    

    Die document.querySelector-Funktion verwendet CSS-Selektoren, genau wie die Selektoren, die Sie in Ihrer CSS-Datei verwendet haben. switcher ist jetzt ein Verweis auf die Schaltfläche auf der Seite.

  2. Fügen Sie nun den Ereignishandler für das click-Ereignis hinzu. Fügen Sie im folgenden Code einen Listener für das click-Ereignis hinzu und definieren eine Ereignishandlerfunktion, die vom Browser ausgeführt werden soll, wenn das click-Ereignis auftritt.

    switcher.addEventListener('click', function() {
        document.body.classList.toggle('light-theme');
        document.body.classList.toggle('dark-theme');
    });
    

Im Code oben haben Sie die toggle-Methode verwendet, um das Klassenattribut des <body>-Elements zu ändern. Mit dieser Methode werden die light-theme- und dark-theme-Klassen automatisch hinzugefügt oder entfernt. Dieser Code wendet die dunklen Formatvorlagen anstelle von hellen Formatvorlagen beim Klickereignis an, und dann helle Formatvorlagen anstelle von dunklen, wenn Sie erneut klicken.

Allerdings muss auch die Beschriftung der Schaltflächen entsprechend dem gewünschten Design aktualisiert werden. Daher müssen Sie eine if-Anweisung hinzufügen, um das aktuelle Design zu bestimmen und die Beschriftung der Schaltfläche zu aktualisieren.

So sollte Ihr JavaScript-Code mit dem hinzugefügten Ereignishandler aussehen.

'use strict';

const switcher = document.querySelector('.btn');

switcher.addEventListener('click', function() {
    document.body.classList.toggle('light-theme');
    document.body.classList.toggle('dark-theme');

    const className = document.body.className;
    if(className == "light-theme") {
        this.textContent = "Dark";
    } else {
        this.textContent = "Light";
    }
});

Es ist zur Konvention für JavaScript geworden, für Variablennamen aus mehr als einem Wort die gemischte Groß-/Kleinschreibung zu verwenden, z. B. wie bei der Variablen className.

Konsolenmeldung

Als Webentwickler können Sie ausgeblendete Meldungen erstellen, die nicht auf Ihrer Webseite angezeigt werden, die Sie aber in den Entwicklertools auf der Registerkarte Konsole lesen können. Die Verwendung von Konsolenmeldungen ist hilfreich, um das Ergebnis Ihres Codes zu sehen.

Fügen Sie nach der if-Anweisung, jedoch innerhalb des Ereignislisteners einen Aufruf von console.log ein.

Nachdem Sie diese Änderung vorgenommen haben, sollte Ihr vollständiger JavaScript-Code wie folgt aussehen.

'use strict';

const switcher = document.querySelector('.btn');

switcher.addEventListener('click', function() {
    document.body.classList.toggle('light-theme');
    document.body.classList.toggle('dark-theme');

    const className = document.body.className;
    if(className == "light-theme") {
        this.textContent = "Dark";
    } else {
        this.textContent = "Light";
    }

    console.log('current class name: ' + className);
});

In Visual Studio Code können Sie in einer JavaScript-Datei für console.log die automatische Vervollständigung verwenden, indem Sie log eingeben und dann die Eingabetaste drücken.

Sie können eine Textzeichenfolge mit einfachen oder doppelten Anführungszeichen um den Text definieren.

Öffnen im Browser

  1. Um eine Vorschau anzuzeigen, wählen Sie index.html und dann In Standardbrowser öffnen aus, oder laden Sie dieselbe Browserregisterkarte erneut, indem Sie F5 drücken.

    Screenshot of the website showing the new button.

  2. Klicken Sie auf die neue Schaltfläche Dunkel, um zum dunklen Design zu wechseln.

    Screenshot of the website after switching to dark theme.

  3. Stellen Sie sicher, dass alles richtig aussieht und sich wie erwartet verhält. Falls nicht, sollten Sie die vorherigen Schritte überprüfen, um zu prüfen, ob Sie etwas übersehen haben.

Überprüfen der Seite in den Entwicklertools

  1. Öffnen Sie die Entwicklertools.

    • Klicken Sie mit der rechten Maustaste, und wählen Sie Untersuchen aus, oder verwenden Sie die Tastenkombination F12. Alternativ können Sie die Tastenkombination STRG+UMSCHALT+I unter Windows oder Linux und OPTION+CMD+I unter macOS verwenden.
  2. Wählen Sie die Registerkarte Elemente und dann auf der Registerkarte Elemente die Registerkarte Formatvorlagen aus.

  3. Wählen Sie das Element <body> aus. Sehen Sie sich auf der Registerkarte Styles das angewendete Design an. Wenn das aktuelle Design dunkel ist, werden die dark-theme-Stile angewendet.

    Stellen Sie sicher, dass das dunkle Design ausgewählt ist.

  4. Wählen Sie die Registerkarte Konsole aus, um die console.log-Meldung (current class name: dark-theme) anzuzeigen.

Screenshot of the browser window with the website and the Developer Tools console open showing the console message.

Mithilfe der Konsole können Sie interessante Einblicke aus Ihrem JavaScript-Code gewinnen. Fügen Sie weitere Konsolenmeldungen hinzu, um zu verstehen, welche Teile des Codes ausgeführt werden, und um die aktuellen Werte anderer Variablen zu kennen.

Weitere Informationen zur Konsole finden Sie im Artikel Übersicht über die Konsole.