15. Unterrichtsblock

JavaScript DOM

HTML-Elemente finden

MethodeBeschreibung
document.getElementById(id)Finde ein Element durch das ID-Attribut
document.getElementsByTagName(name)Finde ein Element durch den Tag-Namen
document.getElementsByClassName(name)Finde ein Element durch den Klassen-Namen

Ändern von HTML-Elementen

EigenschaftBeschreibung
element.innerHTML =  new html contentÄndere das innere HTML eines Elements
element.attribute = new valueFüge einen neuen Attribut-Wert zu einem Elements hinzu
element.style.property = new styleÄndere den Stil eines HTML-Elements
MethodeBeschreibung
element.setAttribute(attribute, value)Ändere den Attribut-Wert eines HTML-Elements

Elemente hinzufügen und löschen

MethodeBeschreibung
document.createElement(element)Erstelle ein HTML Element
document.removeChild(element)Lösche ein HTML-Element
document.appendChild(element)Füge ein HTML-Element hinzu
document.replaceChild(new, old)Ersetze ein HTML-Element
document.write(text)Schreibe in ein HTML-Element

Hinzufügen von Ereignishandlern

MethodeBeschreibung
document.getElementById(id).onclick = function(){code}Adding event handler code to an onclick event

Aufgabe

Aufgabe 1: Text eines Elements ändern

Ziel: Schreibe ein JavaScript-Skript, das den Textinhalt eines HTML-Elements mit einer bestimmten ID ändert.

Anforderungen:

  • Wähle ein Element mit der ID meinElement aus.
  • Ändere den Textinhalt des Elements zu „Hallo Welt!“.
  • Verwende document.getElementById und die textContent-Eigenschaft.

Aufgabe 2: Elementfarbe ändern

Ziel: Implementiere ein JavaScript-Skript, das die Farbe des Textes eines Elements mit der ID farbText in Rot ändert.

Anforderungen:

  • Wähle das Element mit der ID farbText aus.
  • Setze die Textfarbe des Elements auf Rot.
  • Verwende document.getElementById und ändere die style.color-Eigenschaft.

Aufgabe 3: Ein neues Element erstellen und hinzufügen

Ziel: Erstelle ein neues <p>-Element und füge es am Ende des Body-Elements der Seite hinzu. Der Text des Paragraphen soll „Ein neuer Paragraph“ sein.

Anforderungen:

  • Erstelle ein neues <p>-Element.
  • Setze den Textinhalt des neuen Elements auf „Ein neuer Paragraph“.
  • Füge das neue Element am Ende des <body>-Tags hinzu.
  • Verwende document.createElement, textContent und document.body.appendChild.

Aufgabe 4: Ein Event Listener hinzufügen

Ziel: Füge einem Button mit der ID meinButton einen Event Listener hinzu, der bei einem Klick eine Alert-Box mit der Nachricht „Button wurde geklickt!“ anzeigt.

Anforderungen:

  • Wähle den Button mit der ID meinButton aus.
  • Füge einen Event Listener für das click-Ereignis hinzu.
  • Zeige eine Alert-Box mit der Nachricht „Button wurde geklickt!“ an, wenn der Button geklickt wird.
  • Verwende document.getElementById und addEventListener.

Aufgabe 5: Elemente nach Klasse auswählen und deren Hintergrundfarbe ändern

Ziel: Schreibe ein JavaScript-Skript, das alle Elemente mit der Klasse hintergrundFarbe auswählt und deren Hintergrundfarbe in Gelb ändert.

Anforderungen:

  • Wähle alle Elemente mit der Klasse hintergrundFarbe aus.
  • Ändere die Hintergrundfarbe jedes ausgewählten Elements in Gelb.
  • Verwende document.getElementsByClassName und iteriere durch die NodeList, um die style.backgroundColor-Eigenschaft jedes Elements zu ändern.

JavaScript JSON

JSON ist ein Format zum Speichern und Transportieren von Daten. JSON wird häufig verwendet, wenn Daten von einem Server an eine Webseite gesendet werden.
Die Dateiendung lautet: .json

Was ist JSON?

  • JSON steht für Java Script Object Notation
  • JSON ist ein einfaches Datenaustauschformat
  • JSON ist sprachunabhängig *
  • JSON ist „selbstbeschreibend“ und leicht verständlich

Hinweis: Die JSON-Syntax wird von der JavaScript-Objektnotationssyntax abgeleitet, aber das JSON-Format ist nur Text. Code zum Lesen und Generieren von JSON-Daten kann in jeder Programmiersprache geschrieben werden.

JSON-Beispiel

Diese JSON-Syntax definiert ein Objekt mit Mitarbeitern: ein Array von 3 Mitarbeiterdatensätzen (Objekten):

JSON-Beispiel

{
  "mitarbeiter":[
    {"vorName":"Johann", "nachName":"Meier"},
    {"vorName":"Anna", "nachName":"Schmidt"},
    {"vorName":"Peter", "nachName":"Huber"}
  ]
}

Das JSON-Format wird wie JavaScript-Objekte gewertet

Das JSON-Format ist syntaktisch identisch mit dem Code zum Erstellen von JavaScript-Objekten. Aufgrund dieser Ähnlichkeit kann ein JavaScript-Programm JSON-Daten problemlos in native JavaScript-Objekte konvertieren.

JSON-Syntaxregeln

  • Daten befinden sich in Name/Wert-Paaren
  • Daten werden durch Kommas getrennt
  • Geschweifte Klammern halten Objekte
  • Eckige Klammern halten Arrays

JSON-Datensätze

JSON-Daten werden als Name/Wert-Paare geschrieben, genau wie JavaScript-Objekt-Eigenschaften.

Ein Name/Wert-Paar besteht aus einem Feldnamen (in doppelten Anführungszeichen), gefolgt von einem Doppelpunkt, gefolgt von einem Wert:

"vorName":"Johann"

JSON-Namen erfordern doppelte Anführungszeichen. JavaScript-Namen nicht.

JSON-Objekte

JSON-Objekte werden in geschweiften Klammern geschrieben. Genau wie in JavaScript können Objekte mehrere Name/Wert-Paare enthalten:

{"vorName":"Johann", "nachName":"Meier"}

JSON-Arrays

JSON-Arrays werden in eckige Klammern geschrieben. Genau wie in JavaScript kann ein Array Objekte enthalten:

{
  "mitarbeiter":[
    {"vorName":"Johann", "nachName":"Meier"},
    {"vorName":"Anna", "nachName":"Schmidt"},
    {"vorName":"Peter", "nachName":"Huber"}
  ]
}

Im obigen Beispiel ist das Objekt „Mitarbeiter“ ein Array. Es enthält drei Objekte. Jedes Objekt ist eine Aufzeichnung einer Person (mit einem Vornamen und einem Nachnamen).

Konvertieren eines JSON-Texts in ein JavaScript-Objekt

Eine häufige Verwendung von JSON besteht darin, Daten von einem Webserver zu lesen und die Daten auf einer Webseite anzuzeigen. Der Einfachheit halber kann dies anhand eines Strings als Eingabe demonstriert werden.

Man erstellt zunächst einen JavaScript-String mit JSON-Syntax:

let text = '{
  "mitarbeiter":[
    {"vorName":"Johann", "nachName":"Meier"},
    {"vorName":"Anna", "nachName":"Schmidt"},
    {"vorName":"Peter", "nachName":"Huber"}
  ]
}';

Anschließend verwendet man die integrierte JavaScript-Funktion JSON.parse(), um die Zeichenfolge in ein JavaScript-Objekt zu konvertieren:

const obj = JSON.parse(text);

Nun verwendet man das neue JavaScript-Objekt auf der Seite:

<p id="demo1"></p>

<script>
  document.getElementById("demo1").innerHTML =
  obj.mitarbeiter[1].vorName + " " + obj.mitarbeiter[1].nachName;
</script>

JSON-Dateien von einem Server holen und verarbeiten

Meistens wird JSON verwendet, um Datensätze zwischen Webseiten zu übertragen. Hierbei kommt die AJAX-Abfrage-Methode „XMLHttpRequest()“ zum Einsatz.

<!DOCTYPE html>
<html>
  <body>

  <h3>Eine JSON-Datei mit dem Objekt "XMLHttpRequest" holen</h3>
  <p id="demo"></p>

  <script>
    const abfrage = new XMLHttpRequest();
    abfrage.onload = function() {
      const meinObjekt = JSON.parse(this.responseText);
      document.getElementById("demo").innerHTML = meinObjekt.name;
    }
    abfrage.open("GET", "https://webentwicklerkurs.de/wp-content/uploads/2023/01/json_beispiel.json");
    abfrage.send();
  </script>

  </body>
</html>

Eine JSON-Datei mit dem Objekt „XMLHttpRequest“ holen

Aufgabe

Vorbereitung: Schreibe eine JSON-Datei, welche die Werte der Frühstücksbuffets aus dem XML-Beispiel Nr. 2 aus folgendem Unterrichtsblock enthält: https://webentwicklerkurs.de/1-jahr/html/7-unterrichtsblock/#xml

Aufgabe 1: JSON-String in ein JavaScript-Objekt umwandeln

Ziel: Schreibe ein JavaScript-Skript, das einen JSON-String in ein JavaScript-Objekt umwandelt und dann eine Eigenschaft dieses Objekts im Konsolen-Log ausgibt.

Anforderungen:

  • Verwende den JSON-String mit den Inhalten des „Frühstücksbuffets“ der Aufgabenvorbereitung.
  • Verwende JSON.parse zur Umwandlung des JSON-Strings in ein JavaScript-Objekt.
  • Gib den Namen des 2. Essens im Konsolen-Log aus.

Aufgabe 2: Ein JavaScript-Objekt in einen JSON-String umwandeln

Ziel: Erstelle ein JavaScript-Objekt und wandle es in einen JSON-String um. Gib diesen String anschließend im Konsolen-Log aus.

Anforderungen:

JavaScript AJAX

Mit AJAX kann man:

  • Daten von einem Webserver lesen – nachdem die Seite geladen wurde
  • Eine Webseite aktualisieren, ohne die Seite neu zu laden
  • Daten an einen Webserver senden – im Hintergrund

AJAX-Beispiel

Ändern von Inhalten auf HTML-Seite

<!DOCTYPE html>
<html>
  <body>
    <div id="demo1">
      <h2>Diesen Text mit AJAX ändern</h2>
      <button type="button" onclick="ladeDokument()">Ändere Inhalt</button>
    </div>
  <script>
    function ladeDokument() {
      const abfrage = new XMLHttpRequest();
      abfrage.onload = function() {
        document.getElementById("demo1").innerHTML =
        this.responseText;
      }
      abfrage.open("GET", "ajax_beispiel.txt");
      abfrage.send();
    }
  </script>
  </body>
</html>

<!-- die Datei "ajax_beispiel.txt enthält"-->
<h1>AJAX</h1>
<p>AJAX ist keine Programmiersprache.</p>
<p>AJAX ist eine Technik um auf Webserver über eine Webseite zuzugreifen.</p>
<p>AJAX steht für Asynchrones JavaScript und XML.</p>

Die HTML-Seite enthält einen <div>-Abschnitt und einen <button>.
Der Abschnitt <div> wird verwendet, um Informationen von einem Server anzuzeigen.
Der <button> ruft eine Funktion auf (wenn er angeklickt wird).
Die Funktion fordert Daten von einem Webserver an und zeigt sie an.

Was macht AJAX?

AJAX verwendet nur eine Kombination aus:

  • Ein im Browser integriertes XMLHttpRequest-Objekt (um Daten von einem Webserver anzufordern)
  • JavaScript und HTML DOM (um die Daten anzuzeigen oder zu verwenden)

AJAX ist ein irreführender Name. AJAX-Anwendungen verwenden möglicherweise XML zum Transportieren von Daten, aber es ist ebenso üblich, Daten als Text oder JSON-Datei zu transportieren.

AJAX ermöglicht die asynchrone Aktualisierung von Webseiten, indem hinter den Kulissen Daten mit einem Webserver ausgetauscht werden. Das bedeutet, dass es möglich ist, Teile einer Webseite zu aktualisieren, ohne die ganze Seite neu zu laden.

Wie AJAX funktioniert

AJAX
  • 1. Ein Ereignis tritt auf einer Webseite auf (die Seite wird geladen, eine Schaltfläche wird angeklickt)
  • 2. Ein XMLHttpRequest-Objekt wird von JavaScript erstellt
  • 3. Das XMLHttpRequest-Objekt sendet eine Anfrage an einen Webserver
  • 4. Der Server verarbeitet die Anfrage
  • 5. Der Server sendet eine Antwort zurück an die Webseite
  • 6. Die Antwort wird von JavaScript gelesen
  • 7. Die richtige Aktion (wie Seitenaktualisierung) wird von JavaScript durchgeführt

Für moderne Browser (Fetch-API)

Moderne Browser können die Fetch-API anstelle des XMLHttpRequest-Objekts verwenden. Die Fetch-API-Schnittstelle ermöglicht es dem Webbrowser, HTTP-Anforderungen an Webserver zu stellen.

Wenn man das XMLHttpRequest-Objekt verwendet, kann Fetch (zu deutsch abrufen / holen / ziehen) dasselbe auf einfachere Weise tun.

Ein Fetch-API-Beispiel

Da Fetch auf async und await basiert, enthält das folgende Beispiel zwei zusätzliche Keywords:

<!DOCTYPE html>
<html>
<body>
  <p id="demo3">Rufe eine Datei ab, um diese Text zu ändern</p>

  <script>
    getText("fetch_beispiel.txt");

    async function getText(file) {
      let meinObjekt = await fetch(file);
      let meinText = await meinObjekt.text();
      document.getElementById("demo3").innerHTML = meinText;
    }
  </script>

</body>
</html>

<!-- Inhalt der Datei "fetch_beispiel.txt" -->
<h1>Fetch API</h1>
<p>Das Fetch API interface erlaubt es Browsern HTTP-Abfragen von Websevern zu machen.</p>
<p>Anstatt das XMLHttpRequest-Object zu verwenden, kann man dies mit der Fetch-API auch einfacher tun.</p>

Aufgabe

Probiere o.g. Skripte aus und verwende hierbei die Referenz, die hier https://www.mediaevent.de/javascript/json-fetch.html zur Verfügung gestellt werden, um ein Gefühl für fetch() zu bekommen. Lade mehrere Inhalte der Seite https://dummyjson.com/ in das Dokument.

Übungsaufgaben

Aufgabe 1

Lösung

14-unterricht.html