JavaScript: Interaktivität hinzufügen
JavaScript ist eine Programmiersprache, die Websites interaktiv macht. Sie können JavaScript verwenden, um nahezu alles zu steuern – von der Validierung von Formulardaten, über die Funktionalität von Tasten, Spiel-Logik, dynamische Stile bis hin zu Animationen und vielem mehr. Dieser Artikel führt Sie in JavaScript ein und zeigt Ihnen, wie Sie Ihrem ersten Website-Projekt einige unterhaltsame Funktionen hinzufügen können.
Voraussetzungen: | Grundkenntnisse in Ihrem Computer-Betriebssystem, der grundlegenden Software, die für den Aufbau einer Website benötigt wird, und den Dateisystemen. |
---|---|
Lernziele: |
|
Was ist JavaScript?
JavaScript ist eine vollwertige Programmiersprache – sie enthält alle klassischen Programmiermerkmale, die Sie möglicherweise aus anderen Programmiersprachen kennen (oder zumindest davon gehört haben), wie Variablen, Schleifen und Funktionen.
JavaScript, wenn es auf Webseiten verwendet wird (obwohl es auch an anderen Stellen verwendet werden kann), funktioniert im Allgemeinen folgendermaßen:
- Erhalten von Referenzen auf einen oder mehrere Werte, wie z.B. Zahlen oder auf Elemente auf der Seite.
- Durchführung von Operationen mit diesen Werten, wie z.B. das Addieren von Zahlen.
- Rückgabe eines Ergebnisses, das später für andere Zwecke verwendet werden kann. So können Sie z.B. die Summe dieser Zahlen auf der Seite anzeigen lassen.
Schauen wir uns ein Beispiel an. Wir werden dieselbe grundlegende Liste verwenden, die wir in den letzten Artikeln gesehen haben:
<p>Instructions for life:</p>
<ul>
<li>Eat</li>
<li>Sleep</li>
<li>Repeat</li>
</ul>
Wir definieren auch eine CSS-Klasse namens .done
, die jedes Element, auf das sie angewendet wird, so stylt, dass es wie eine abgeschlossene Aufgabe aussieht, mit grüner Textfarbe und einem Durchstrich. Diese Klasse werden wir im nächsten Schritt mit JavaScript auf unsere <li>
-Elemente anwenden.
.done {
color: darkseagreen;
text-decoration: line-through solid black 2px;
}
Kommen wir nun zum JavaScript. Hier speichern wir zunächst Referenzen auf die <li>
-Elemente in einer Variablen namens listItems
. Dann definieren wir eine Funktion namens toggleDone()
, die das done
-Klasse einem Listenelement hinzufügt, wenn es sie noch nicht hat, und sie entfernt, wenn es sie hat. Schließlich durchlaufen wir die Listenelemente (mithilfe von forEach()
) und fügen jedem Listenelement einen Ereignis-Listener hinzu (mithilfe von addEventListener()
), sodass beim Klicken darauf die done
-Klasse umgeschaltet wird und das von uns definierte CSS angewendet wird.
const listItems = document.querySelectorAll("li");
function toggleDone(e) {
if (!e.target.className) {
e.target.className = "done";
} else {
e.target.className = "";
}
}
listItems.forEach((item) => {
item.addEventListener("click", toggleDone);
});
Machen Sie sich keine Sorgen, wenn Sie das obige JavaScript jetzt noch nicht verstehen. Sich mit JavaScript vertraut zu machen, ist herausfordernder als sich mit HTML und CSS vertraut zu machen, aber im Verlauf des Kurses wird alles klarer werden.
Dieses Beispiel wird in einem Webbrowser folgendermaßen dargestellt:
Versuchen Sie, die Listenelemente ein paar Mal anzuklicken und beobachten Sie, wie die "done"-Stile als Ergebnis umgeschaltet werden. Gar nicht so schlecht für 11 Zeilen JavaScript.
Ein "Hello world!"-Durchlauf
Um Sie beim Schreiben von JavaScript zu starten, führen wir Sie durch das Hinzufügen eines Hello world!-Beispiels zu Ihrer Beispiel-Website. (Hello world! ist das Standard-Einführungsprogrammierbeispiel.)
Warnung: Wenn Sie dem Rest unseres Kurses nicht gefolgt sind, laden Sie dieses Beispielcode herunter und verwenden Sie es als Ausgangspunkt.
-
Erstellen Sie in Ihrem
first-website
-Ordner oder dem soeben heruntergeladenen Beispielordner einen neuen Ordner namensscripts
. -
Erstellen Sie innerhalb des Ordners
scripts
ein neues Textdokument namensmain.js
und speichern Sie es ab. -
Gehen Sie zu Ihrer
index.html
-Datei und geben Sie diesen Code in einer neuen Zeile ein, kurz vor dem schließenden</head>
-Tag:html<script async src="scripts/main.js"></script>
Dies erledigt dieselbe Aufgabe wie das
<link>
-Element für CSS – es wendet das JavaScript auf die Seite an, sodass es das HTML (zusammen mit dem CSS und allem anderen auf der Seite) beeinflussen kann. -
Fügen Sie diesen Code zu Ihrer Datei
scripts/main.js
hinzu:js// Store a reference to the <h1> in a variable const myHeading = document.querySelector("h1"); // Update the text content of the <h1> myHeading.textContent = "Hello world!";
-
Stellen Sie sicher, dass die HTML- und JavaScript-Dateien gespeichert sind, und laden Sie dann
index.html
in Ihrem Browser. Sie sollten so etwas sehen:
Lassen Sie uns analysieren, wie dieses Beispiel funktioniert.
Wir haben JavaScript verwendet, um den Überschriftstext in Hello world!
zu ändern. Wir haben eine Referenz auf die Überschrift erstellt und in einer Variablen namens myHeading
gespeichert (ein Container, der einen Wert speichert). Das ist ähnlich wie bei der Anwendung von CSS auf Elemente – Sie wählen zuerst die Elemente aus, die Sie beeinflussen möchten, indem Sie einen CSS-Selektor verwenden, und definieren dann die Stile, die für diese Elemente gelten sollen. In beiden Fällen, wenn Sie etwas mit einem Element tun möchten, müssen Sie es zuerst auswählen.
Danach haben wir den Wert der textContent
-Eigenschaft der myHeading
-Variablen (welches den Textinhalt des <h1>
-Elements darstellt) auf Hello world! gesetzt.
Die Zeilen, die mit //
beginnen, sind JavaScript-Kommentare. Wie bei HTML- und CSS-Kommentaren ignoriert der Browser diese und bietet Ihnen eine Möglichkeit, Notizen zu Ihrem Code hinzuzufügen, um zu erklären, wie er funktioniert.
Kommen wir zum nächsten Schritt und fügen wir unserer Beispiel-Website einige neue Funktionen hinzu.
Warnung:
Bevor Sie weitermachen, löschen Sie den "Hello world!"-Code aus Ihrer main.js
-Datei. Wenn Sie dies nicht tun, wird der vorhandene Code mit dem neuen Code, den Sie hinzufügen werden, kollidieren.
Hinzufügen eines Bildwechslers
In diesem Abschnitt verwenden Sie JavaScript und DOM API-Funktionen, um die Anzeige zwischen zwei Bildern zu wechseln. Diese Änderung tritt ein, wenn ein Benutzer das angezeigte Bild anklickt.
-
Wählen Sie ein weiteres Bild aus, das Sie auf Ihrer Beispiel-Website zeigen möchten. Idealerweise sollte das Bild die gleiche Größe wie das zuvor hinzugefügte Bild oder so nah wie möglich sein.
-
Speichern Sie dieses Bild in Ihrem
images
-Ordner. -
Fügen Sie den folgenden JavaScript-Code zu Ihrer Datei
main.js
hinzu, und ersetzen Sie dabeifirefox2.png
und beide Instanzen vonfirefox-icon.png
durch die Namen Ihrer zweiten bzw. ersten Bilder.jsconst myImage = document.querySelector("img"); myImage.addEventListener("click", () => { const mySrc = myImage.getAttribute("src"); if (mySrc === "images/firefox-icon.png") { myImage.setAttribute("src", "images/firefox2.png"); } else { myImage.setAttribute("src", "images/firefox-icon.png"); } });
-
Speichern Sie alle Dateien und laden Sie
index.html
im Browser. Jetzt sollte das Bild wechseln, wenn Sie darauf klicken.
In diesem Code haben Sie eine Referenz auf Ihr <img>
-Element in der Variablen myImage
gespeichert. Dann haben Sie ihr eine click
-Ereignishandler-Funktion zugewiesen. Jedes Mal, wenn das <img>
angeklickt wird, führt die Funktion folgendes aus:
- Ruft den Wert des
src
-Attributs des Bildes ab. - Verwendet eine Bedingung (
if ... else
-Struktur), um zu überprüfen, ob dersrc
-Wert dem Pfad des ursprünglichen Bildes entspricht:- Wenn ja, ändert der Code den
src
-Wert in den Pfad des zweiten Bildes, wodurch das andere Bild im<img>
-Element geladen wird. - Wenn nicht (d.h. das Bild wurde bereits gewechselt), wechselt der
src
-Wert zurück zum ursprünglichen Bildpfad.
- Wenn ja, ändert der Code den
Hinweis: Dieser Abschnitt führt mehrere wichtige Begriffe ein. Wichtige Konzepte umfassen:
- API: Ein Satz von Funktionen, der es einem Entwickler ermöglicht, mit einer Programmierumgebung zu interagieren. Web-APIs (wie die oben verwendeten DOM API-Funktionen) basieren auf der JavaScript-Sprache und ermöglichen es Ihnen, verschiedene Teile des Browsers und der angezeigten Webseiten zu manipulieren.
- Ereignisse: Dinge, die im Browser passieren. Sie sind entscheidend, um Websites interaktiv zu machen. Sie können Code als Antwort auf Ereignisse ausführen, indem Sie Ereignishandler-Funktionen verwenden – dies sind Codeblöcke, die ausgeführt werden, wenn ein Ereignis eintritt. Das gebräuchlichste Beispiel ist das Klick-Ereignis, das vom Browser ausgelöst wird, wenn ein Benutzer auf etwas klickt.
- Funktionen: Eine Möglichkeit, Code zu verpacken, den Sie wiederverwenden möchten. Sie können Ihren Code einmal innerhalb einer Funktion definieren und ihn dann so oft ausführen, wie Sie möchten, was Ihnen hilft, das Schreiben von demselben Code immer wieder zu vermeiden. In unserem Beispiel hier haben wir eine
click
-Ereignishandler-Funktion definiert, die jedes Mal ausgeführt wird, wenn ein Benutzer auf das Bild klickt. - Bedingungen: Code-Strukturen, die verwendet werden, um zu überprüfen, ob eine Ausdruck
true
oderfalse
zurückgibt, und um je nach Ergebnis verschiedenen Code auszuführen. Eine sehr häufige Form der Bedingung ist dieif...else
-Anweisung.
Hinzufügen einer personalisierten Willkommensnachricht
Als nächstes ändern wir die Seitenüberschrift, um eine personalisierte Willkommensnachricht anzuzeigen, wenn der Benutzer die Website zum ersten Mal besucht. Diese Willkommensnachricht wird im Browser mithilfe der Web Storage API gespeichert, sodass die persönlichen Daten des Benutzers auch nach dem Verlassen der Website und einer Rückkehr später noch vorhanden sind. Wir werden auch eine Möglichkeit einfügen, damit der Benutzer die Nachricht ändern kann.
-
Fügen Sie in
index.html
die folgende Zeile kurz vor dem schließenden</body>
-Tag hinzu:html<button>Change user</button>
-
Platzieren Sie in
main.js
den folgenden Code am Ende der Datei, genau wie geschrieben. Dies erstellt Referenzen auf die neue Taste und die Überschrift und speichert jede in Variablen:jslet myButton = document.querySelector("button"); let myHeading = document.querySelector("h1");
-
Fügen Sie die folgende Funktion hinzu, um die personalisierte Begrüßung einzurichten. Dies wird noch nichts tun; wir werden die Funktion später aufrufen.
jsfunction setUserName() { const myName = prompt("Please enter your name."); localStorage.setItem("name", myName); myHeading.textContent = `Mozilla is cool, ${myName}`; }
Die
setUserName()
-Funktion enthält eineprompt()
-Funktion, die den Benutzer auffordert, Daten einzugeben und sie nach dem Klicken auf OK in einer Variablen zu speichern. In diesem Beispiel bitten wir den Benutzer, einen Namen einzugeben, und speichern ihn inmyName
.Als Nächstes verwendet der Code die Web Storage API, die es uns ermöglicht, Daten im Browser zu speichern und später abzurufen. Wir verwenden die Funktion
localStorage.setItem()
, um ein Datenelement namens"name"
zu erstellen und zu speichern, dessen Wert auf diemyName
-Variable gesetzt wird, die die Eingabe des Benutzers enthält.Schließlich setzen wir den
textContent
der Überschrift auf einen String, der den gespeicherten Namen des Benutzers enthält. -
Fügen Sie nach der Funktionsdeklaration den folgenden bedingten Block hinzu. Dies ist unser Initialisierungscode – er wird ausgeführt, wenn die Seite zum ersten Mal geladen wird, um das Programm zu starten:
jsif (!localStorage.getItem("name")) { setUserName(); } else { const storedName = localStorage.getItem("name"); myHeading.textContent = `Mozilla is cool, ${storedName}`; }
Die erste Zeile dieses Blocks verwendet den Negationsoperator (logisches NICHT, dargestellt durch das
!
-Zeichen), um zu überprüfen, ob dasname
-Datenelement nicht bereits inlocalStorage
gespeichert ist. Wenn nicht, wird diesetUserName()
-Funktion ausgeführt, um es zu erstellen. Wenn es existiert (d.h. der Benutzer hat während eines früheren Besuchs einen Benutzernamen gesetzt), rufen wir den gespeicherten Namen mitlocalStorage.getItem()
ab und setzen dentextContent
der Überschrift auf einen String plus den Namen des Benutzers – ähnlich wie wir es innerhalb vonsetUserName()
gemacht haben. -
Fügen Sie der Taste eine
click
-Ereignishandler-Funktion hinzu. Wenn angeklickt, wirdsetUserName()
ausgeführt. Dies ermöglicht dem Benutzer, einen anderen Namen zu speichern, wenn er möchte.jsmyButton.addEventListener("click", () => { setUserName(); });
-
Speichern Sie alle Dateien und laden Sie
index.html
im Browser. Sie sollten sofort aufgefordert werden, Ihren Namen einzugeben. Nachdem Sie dies getan haben, wird er als Teil der personalisierten Begrüßung innerhalb des<h1>
angezeigt. Beachten Sie, wie die Personalisierung auch nach dem Neuladen der Seite erhalten bleibt. Sie können die Schaltfläche "Benutzer ändern" anklicken, um einen neuen Namen einzugeben.
Hinweis:
Der Begriff Operator bezieht sich auf ein JavaScript-Sprache-Zeichen, das eine Operation auf einem oder mehreren Werten durchführt. Beispiele umfassen +
(addiert Werte), -
(subtrahiert einen Wert von einem anderen) und !
(negiert einen Wert – wie Sie zuvor gesehen haben).
Ein Benutzername von null?
Wenn Sie das Beispiel ausführen und das Dialogfeld erhalten, das Sie auffordert, Ihren Namen einzugeben, versuchen Sie die Abbrechen-Taste zu drücken. Sie sollten mit einer Überschrift enden, die Mozilla is cool, null liest. Dies geschieht, weil der Wert auf null
gesetzt wird, wenn Sie die Eingabeaufforderung abbrechen. In JavaScript ist null ein spezieller Wert, der das Fehlen eines Wertes darstellt.
Versuchen Sie auch, auf OK zu klicken, ohne einen Namen einzugeben. Sie sollten mit einer Überschrift enden, die Mozilla is cool, liest, da Sie myName
auf einen leeren String gesetzt haben.
Um diese Probleme zu vermeiden, können Sie eine weitere Bedingung hinzufügen, um zu überprüfen, dass der Benutzer keinen leeren Namen eingegeben hat. Aktualisieren Sie Ihre setUserName()
-Funktion wie folgt:
function setUserName() {
const myName = prompt("Please enter your name.");
if (!myName) {
setUserName();
} else {
localStorage.setItem("name", myName);
myHeading.textContent = `Mozilla is cool, ${myName}`;
}
}
In menschlicher Sprache bedeutet dies: Wenn myName
keinen Wert hat, führen Sie setUserName()
erneut von Anfang an aus. Wenn es einen Wert hat (wenn die obige Anweisung nicht wahr ist), dann speichern Sie den Wert in localStorage
und setzen ihn als Text der Überschrift.
Fazit
Wenn Sie alle Anweisungen in diesem Artikel befolgt haben, sollten Sie mit einer Seite enden, die etwas wie das unten stehende Bild aussieht. Sie können auch unsere Version anzeigen.
Wenn Sie feststecken, können Sie Ihre Arbeit mit unserem fertigen Beispielcode auf GitHub vergleichen.
Wir haben in diesem Artikel nur an der Oberfläche von JavaScript gekratzt. Sie werden viel mehr in unserem Dynamisches Skripting mit JavaScript Kernmodul später im Kurs lernen.
Siehe auch
- Scrimba: Learn JavaScript MDN Lernpartner
-
Scrimbas Learn JavaScript-Kurs lehrt Ihnen JavaScript durch das Lösen von über 140 interaktiven Codierherausforderungen, der Erstellung von Projekten, einschließlich eines Spiels, einer Browser-Erweiterung und sogar einer mobilen App. Scrimba bietet unterhaltsame interaktive Lektionen, die von sachkundigen Lehrern unterrichtet werden.
- Learn JavaScript
-
Dies ist eine ausgezeichnete Ressource für angehende Webentwickler! Lernen Sie JavaScript in einer interaktiven Umgebung mit kurzen Lektionen und interaktiven Tests, angeleitet durch eine automatisierte Bewertung. Die ersten 40 Lektionen sind kostenlos. Der vollständige Kurs ist für eine kleine Einmalzahlung erhältlich.