JavaScript: Interaktivität hinzufügen
JavaScript ist eine Programmiersprache, die Interaktivität zu Webseiten hinzufügt. Sie können es verwenden, um nahezu alles zu steuern – Formulardatenvalidierung, Button-Funktionalität, Spiel-Logik, dynamisches Styling, Animation-Updates und vieles mehr. Dieser Artikel hilft Ihnen beim Einstieg mit JavaScript und führt Sie durch das Hinzufügen einiger unterhaltsamer Funktionen zu Ihrer ersten Website.
Voraussetzungen: | Grundlegende Vertrautheit mit Ihrem Computer-Betriebssystem, der grundlegenden Software, die Sie zum Erstellen einer Webseite verwenden, und Dateisystemen. |
---|---|
Lernziele: |
|
Was ist JavaScript?
JavaScript ist eine vollwertige Programmiersprache – sie enthält alle klassischen Programmiermerkmale, die Sie möglicherweise in anderen Programmiersprachen gesehen haben (oder zumindest gehört haben), wie Variablen, Schleifen und Funktionen.
JavaScript, wenn es auf Webseiten verwendet wird (obwohl es auch an anderen Orten verwendet werden kann), funktioniert typischerweise durch:
- Abrufen von Referenzen zu einem oder mehreren Werten wie Zahlen oder zu Elementen auf der Seite.
- Etwas mit diesen Werten tun, wie die Zahlen zusammenzuzählen.
- Rückgabe eines Ergebnisses, das später für etwas anderes verwendet werden kann. Zum Beispiel könnten Sie die Summe dieser Zahlen auf der Seite anzeigen wollen.
Schauen wir uns ein Beispiel an. Wir verwenden dieselbe grundlegende Liste, die wir in den letzten beiden 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, stylt und es wie eine abgeschlossene Aufgabe mit grüner Textfarbe und einem Durchstrich aussehen lässt. Wir werden sie im nächsten Schritt mit JavaScript auf unsere <li>
-Elemente anwenden.
.done {
color: darkseagreen;
text-decoration: line-through solid black 2px;
}
Nun zum JavaScript. Hier speichern wir zuerst Referenzen zu den <li>
-Elementen in einer Variablen namens listItems
. Dann definieren wir eine Funktion namens toggleDone()
, die die Klasse done
zu einem Listenelement hinzufügt, wenn es sie nicht bereits hat, und die Klasse entfernt, wenn doch. Schließlich durchlaufen wir die Listenelemente (verwenden forEach()
) und fügen jedem Listenelement einen Ereignis-Listener hinzu (verwenden addEventListener()
), damit beim Klicken auf das Element die done
-Klasse umgeschaltet wird und das zuvor 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 Gedanken, wenn Sie das obige JavaScript jetzt nicht verstehen. Sich in JavaScript einzuarbeiten ist anspruchsvoller als sich mit HTML und CSS vertraut zu machen, aber im späteren Verlauf des Kurses wird alles klarer.
Dieses Beispiel wird wie folgt in einem Webbrowser dargestellt:
Versuchen Sie, die Listenelemente ein paar Mal zu klicken und beachten Sie, wie die "done"-Stile als Ergebnis umgeschaltet werden. Nicht schlecht für 11 Zeilen JavaScript.
Ein "Hello world!" Rundgang
Um Sie mit dem Schreiben von JavaScript zu beginnen, führen wir Sie durch das Hinzufügen eines Hello world!-Beispiels zu Ihrer Beispielwebsite. (Hello world! ist das Standard-Beispielprogramm zum Einstieg in die Programmierung.)
Warnung: Wenn Sie dem Rest unseres Kurses nicht gefolgt sind, laden Sie diesen Beispielcode herunter und verwenden Sie ihn als Ausgangspunkt.
-
Erstellen Sie in Ihrem
first-website
-Ordner oder dem eben heruntergeladenen Beispielordner einen neuen Ordner namensscripts
. -
Erstellen Sie im
scripts
-Ordner ein neues Textdokument mit dem Namenmain.js
und speichern Sie es. -
Gehen Sie zu Ihrer
index.html
-Datei und geben Sie diesen Code in einer neuen Zeile ein, unmittelbar vor dem schließenden</head>
-Tag:html<script async src="scripts/main.js"></script>
Dies übernimmt 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
scripts/main.js
-Datei 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 etwas wie dies sehen:
Lassen Sie uns aufschlüsseln, wie dieses Beispiel funktioniert.
Wir haben JavaScript verwendet, um den Überschriftstext in Hello world!
zu ändern. Wir haben eine Referenz zur Überschrift gespeichert und in einer Variablen namens myHeading
gespeichert (einem Container, der einen Wert speichert). Dies ist ähnlich wie das Anwenden von CSS auf Elemente – Sie wählen zuerst die Elemente aus, die Sie beeinflussen möchten, indem Sie einen CSS-Selektor verwenden und dann die Stile definieren, die Sie für diese Elemente wünschen. In beiden Fällen müssen Sie, wenn Sie etwas mit einem Element machen möchten, es zuerst auswählen.
Anschließend haben wir den Wert der textContent
-Eigenschaft der myHeading
-Variablen (die den Textinhalt des <h1>
-Elements repräsentiert) auf Hello world! gesetzt.
Die Zeilen, die mit //
beginnen, sind JavaScript-Kommentare. Genau wie HTML- und CSS-Kommentare ignoriert der Browser diese und ermöglicht es Ihnen, Notizen zu Ihrem Code hinzuzufügen, um zu erklären, wie er funktioniert.
Lassen Sie uns fortfahren und einige neue Funktionen zu unserer Beispielseite hinzufügen.
Warnung:
Bevor Sie fortfahren, löschen Sie den "Hello world!"-Code aus Ihrer main.js
-Datei. Wenn Sie dies nicht tun, wird der bestehende Code mit dem neuen Code, den Sie hinzufügen werden, in Konflikt geraten.
Hinzufügen eines Bildwechslers
In diesem Abschnitt verwenden Sie JavaScript und DOM API Funktionen, um die Anzeige zwischen zwei Bildern zu wechseln. Dieser Wechsel wird erfolgen, wenn ein Benutzer auf das angezeigte Bild klickt.
-
Wählen Sie ein anderes Bild aus, das Sie auf Ihrer Beispielseite präsentieren möchten. Idealerweise sollte das Bild die gleiche Größe wie das zuvor hinzugefügte haben oder so nah wie möglich dran sein.
-
Speichern Sie dieses Bild in Ihrem
images
-Ordner. -
Fügen Sie den folgenden JavaScript-Code zu Ihrer
main.js
-Datei hinzu und stellen Sie sicher, dass Siefirefox2.png
und beide Instanzen vonfirefox-icon.png
mit Ihrem zweiten und ersten Bildnamen ersetzen.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. Wenn Sie nun auf das Bild klicken, sollte es sich in das andere Bild ändern.
In diesem Code haben Sie eine Referenz zu Ihrem <img>
-Element in der Variablen myImage
gespeichert. Dann haben Sie ihm eine click
-Ereignis-Handler-Funktion zugewiesen. Jedes Mal, wenn auf das <img>
geklickt wird, führt die Funktion Folgendes aus:
-
Ruft den Wert des
src
-Attributs des Bildes ab. -
Verwendet eine Bedingungsstruktur (
if ... else
), um zu überprüfen, ob dersrc
-Wert dem Pfad des Originalbildes entspricht:- Wenn ja, ändert der Code den
src
-Wert in den Pfad des zweiten Bildes, wodurch das andere Bild innerhalb des<img>
-Elements geladen wird. - Wenn nicht (was bedeutet, dass das Bild bereits geändert wurde), 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. Schlüsselkonzepte umfassen:
- API: Eine Reihe von Funktionen, die es einem Entwickler ermöglichen, 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 von ihm angezeigten Webseiten zu manipulieren.
- Ereignisse: Dinge, die im Browser passieren. Sie sind entscheidend, um Webseiten interaktiv zu machen. Sie können Code in Reaktion auf Ereignisse ausführen, indem Sie Ereignis-Handler-Funktionen verwenden – dies sind Codeblöcke, die ausgeführt werden, wenn ein Ereignis eintritt. Das häufigste Beispiel ist das click event, 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 dann so oft ausführen, wie Sie möchten. Dies hilft Ihnen, denselben Code nicht immer wieder schreiben zu müssen. In unserem Beispiel haben wir eine
click
-Ereignis-Handler-Funktion definiert, die jedes Mal ausgeführt wird, wenn ein Benutzer auf das Bild klickt. - Bedingungen: Code-Strukturen, die verwendet werden, um zu testen, ob ein Ausdruck
true
oderfalse
zurückgibt, und darauf basierend unterschiedlichen Code auszuführen. Eine sehr häufige Form von Bedingungen 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 Seite zum ersten Mal besucht. Diese Willkommensnachricht wird im Browser mit der Web Storage API gespeichert, sodass, wenn der Benutzer die Seite verlässt und später zurückkehrt, seine personalisierten Daten noch da sind. Wir werden auch eine Möglichkeit hinzufügen, die Nachricht zu ändern.
-
Fügen Sie in
index.html
die folgende Zeile unmittelbar 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 so wie er geschrieben ist. Dies erstellt Referenzen zu dem neuen Button und der Überschrift und speichert jeden in Variablen:jslet myButton = document.querySelector("button"); let myHeading = document.querySelector("h1");
-
Fügen Sie die folgende Funktion hinzu, um die personalisierte Begrüßung einzustellen. Diese wird noch nichts unternehmen; 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 zur Eingabe von Daten auffordert und sie in einer Variablen speichert, nachdem er auf OK geklickt hat. In diesem Beispiel fragen wir den Benutzer, einen Namen einzugeben, und speichern ihn inmyName
.Anschließend verwendet der Code die Web Storage API, die es uns ermöglicht, Daten im Browser zu speichern und später abzurufen. Wir verwenden die
localStorage.setItem()
-Funktion, um ein Datenelement namens"name"
zu erstellen und zu speichern und dessen Wert auf diemyName
-Variable zu setzen, die die Benutzereingabe enthält.Schließlich setzen wir den
textContent
der Überschrift auf einen String, der den gespeicherten Namen des Benutzers enthält. -
Fügen Sie diesen Bedingungsblock nach der Funktionsdeklaration hinzu. Dies ist unser Initialisierungscode — er läuft, wenn die Seite zuerst 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 noch nicht imlocalStorage
gespeichert ist. Falls nicht, wird diesetUserName()
-Funktion ausgeführt, um es zu erstellen. Wenn es existiert (d.h. der Benutzer während eines früheren Besuchs einen Benutzernamen festgelegt hat), holen wir den gespeicherten Namen mitlocalStorage.getItem()
ab und setzen dentextContent
der Überschrift auf eine Zeichenkette plus den Benutzernamen – genau wie wir es innerhalbsetUserName()
gemacht haben. -
Fügen Sie dem Button eine
click
-Ereignis-Handler-Funktion hinzu. Beim Klicken wirdsetUserName()
ausgeführt. Dies ermöglicht dem Benutzer, einen anderen Namen zu speichern, falls er möchte.jsmyButton.addEventListener("click", () => { setUserName(); });
-
Speichern Sie alle Dateien und laden Sie
index.html
im Browser. Es sollte sofort eine Aufforderung zur Eingabe Ihres Namens erscheinen. Nachdem Sie ihn eingegeben haben, wird er innerhalb des<h1>
als Teil der personalisierten Begrüßung angezeigt. Beachten Sie, wie die Personalisierung sogar dann bestehen bleibt, wenn Sie die Seite neu laden. Sie können den Button "Change user" klicken, um einen neuen Namen einzugeben.
Hinweis:
Der Begriff Operator bezieht sich auf ein JavaScript-Sprachzeichen, das eine Operation an einem oder mehreren Werten durchführt. Beispiele sind +
(fügt Werte hinzu), -
(subtrahiert einen Wert von einem anderen) und !
(negiert einen Wert – wie bereits gesehen).
Ein Benutzername von null?
Wenn Sie das Beispiel ausführen und das Dialogfeld erhalten, das Sie zur Eingabe Ihres Namens auffordert, versuchen Sie, die Abbrechen-Schaltfläche zu drücken. Sie sollten mit einem Titel enden, der Mozilla is cool, null lautet. Dies passiert, weil der Wert auf null
gesetzt wird, wenn Sie die Eingabeaufforderung abbrechen. In JavaScript ist null ein spezieller Wert, der die Abwesenheit eines Wertes darstellt.
Versuchen Sie auch, OK zu klicken, ohne einen Namen einzugeben. Sie sollten mit einem Titel enden, der lautet Mozilla is cool, da Sie myName
auf eine leere Zeichenkette gesetzt haben.
Um diese Probleme zu vermeiden, können Sie eine weitere Bedingung hinzufügen, um zu überprüfen, ob 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 Aussage nicht wahr ist), 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 in etwa so aussieht wie das untenstehende Bild. Sie können auch unsere Version anzeigen.
Wenn Sie nicht weiterkommen, können Sie Ihre Arbeit mit unserem fertigen Beispielcode auf GitHub vergleichen.
Wir haben in diesem Artikel nur die Oberfläche von JavaScript angekratzt. Sie werden viel mehr in unserem Dynamisches Scripting mit JavaScript Kernmodul später im Kurs lernen.
Siehe auch
- Scrimba: Learn JavaScript MDN Lernpartner
-
Scrimba's Learn JavaScript Kurs lehrt Ihnen JavaScript durch das Lösen von über 140 interaktiven Programmieraufgaben und dem Aufbau von Projekten, einschließlich eines Spiels, einer Browsererweiterung und sogar einer mobilen App. Scrimba bietet unterhaltsame interaktive Lektionen, die von kompetenten Lehrern geleitet werden.
- Learn JavaScript
-
Dies ist eine hervorragende 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 gegen eine kleine einmalige Zahlung verfügbar.