studyklar
IProg · Klausur 2 · Aufgabe 2

JavaScript und DOM: Namen ausblenden und Farbe per Klick wechseln

Ein kleines Script arbeitet mit einer Liste aus vier Namen. Teil (a) erklärt, was es tut und was der Browser zeigt, Teil (b) ändert den regulären Ausdruck, Teil (c) ergänzt einen Klick, der die Farbe wechselt. Rechts steht der Code und darunter, was der Browser in diesem Schritt anzeigt. Mit Weiter geht es Schritt für Schritt voran.

Die Aufgabe

2) JavaScript (14 Punkte)

a) Erläutern Sie detailliert die Wirkung des JavaScript-Codes im Zusammenspiel mit der HTML-Seite aus den folgenden Ausschnitten. Was wird dem Benutzer angezeigt?

<script>  window.onload = function() {    for (let i = 4; i > 0; i--) {      let el = document.getElementById('i' + i);      if (/^A/.test(el.innerText))        el.style.display = "none";  };</script>
<body><h1>Liste:</h1><ul id="u1">  <li id="i1">Anton</li>  <li id="i2">Beate</li>  <li id="i3">Arthur</li>  <li id="i4">Clara</li></ul></body>

b) Was ändert sich an der Ausgabe, wenn im Programmcode die Zeichen /^A/ durch /a/ ersetzt werden?

c) Beim Klicken auf einen Namen soll die Farbe aller Namen auf grün geändert werden. Falls sie schon grün sind auf blau. Wie muss der Code geändert werden, um das möglichst einfach zu erreichen?

Gegeben sind ein Script und eine HTML-Seite mit einer Liste aus vier Namen. In (a) soll man genau erklären, was das Script mit der Liste macht und was am Ende zu sehen ist. In (b) wird ein Zeichen im Script geändert. In (c) soll man den Code so erweitern, dass ein Klick die Farbe aller Namen wechselt.

Für die ganze Aufgabe gibt es 14 Punkte. Die Musterlösung nennt für (b) 2 und für (c) 5 Punkte; für (a) bleiben damit 7.

Achtung: Im abgedruckten Code fehlt eine schließende Klammer. Schritt 1 zeigt, wo, und ergänzt sie. Gemeint ist erkennbar der korrigierte Code.

Merke: JavaScript ändert eine Seite über das DOM (Document Object Model, die Seite als Baum aus Knoten): Element über seine id holen, dann seinen Inhalt oder Style ändern.
  1. Die fehlende Klammer ergänzen.
  2. (a) Liste, onload, Schleife, regulärer Ausdruck, Ausblenden; die Anzeige.
  3. (b) Was /a/ statt /^A/ trifft; die neue Anzeige.
  4. (c) Ein Klick-Handler an der Liste, der zwischen Grün und Blau wechselt.

Die fehlende Klammer

    }  };

Zählt man die Klammern im Script: Zwei öffnen sich mit { (Zeilen 2 und 3), aber nur eine schließt. So abgetippt, meldet der Browser einen Syntaxfehler und führt gar nichts aus.

Gemeint ist erkennbar der Code mit beiden Klammern: Zeile 7 bekommt ein } dazu. Was die beiden Blöcke sind, erklären die nächsten Schritte. In der Klausur lohnt sich ein kurzer Satz dazu.

Die Liste und ihre ids

<body><h1>Liste:</h1><ul id="u1">  <li id="i1">Anton</li>  <li id="i2">Beate</li>  <li id="i3">Arthur</li>  <li id="i4">Clara</li></ul></body>

Die Seite hat eine Überschrift „Liste:“ und eine Aufzählung <ul> (unordered list, Liste mit Punkten) mit vier Einträgen <li> (list item). Jeder Eintrag hat eine eigene id: i1 bis i4. Eine id ist im Dokument eindeutig; über sie findet JavaScript genau ein Element.

Ohne Script zeigt der Browser alle vier Namen, wie rechts unten.

Aus Skript 02, Folie 8: Eine ID muss innerhalb eines Dokumentes eindeutig sein; Zugriff über JavaScript mit document.getElementById("IdVal").
Noch 10 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1(a) Was das Script tut

Namen mit A ausblenden

<script>  window.onload = function() {    for (let i = 4; i > 0; i--) {      let el = document.getElementById('i' + i);      if (/^A/.test(el.innerText))        el.style.display = "none";  };</script> <body><h1>Liste:</h1><ul id="u1">  <li id="i1">Anton</li>  <li id="i2">Beate</li>  <li id="i3">Arthur</li>  <li id="i4">Clara</li></ul></body>
Browser · nur das HTML, ohne Script
Liste:
  • Anton
  • Beate
  • Arthur
  • Clara
ausgeblendet: keiner · ul.style.color: nicht gesetzt
LegendeZeilen und Namen des SchrittsDer Code der Klausur und, darunter, die Liste im Browser, bevor das Script läuft.