Grundlagen
Webseiten basieren auf drei Technologien: HTML, CSS und JavaScript. Während HTML für die Struktur und CSS für das Aussehen der Webseite zuständig ist, sorgt JavaScript für die Interaktivität und dynamische Inhalte.
JavaScript ist eine Programmiersprache - es ist hier aber nicht das Ziel, Programmierer:in zu werden. Es soll einen grundlegenden Einblick geben und aufzeigen, wie JavaScript in Webseiten eingebunden und verwendet wird.
- Beispiele für das Hinzufügen- und Verändern von CSS (Stil und Klassen) mittels JavaScript.
- Beispiele für das Reagieren auf Benutzerinteraktionen (z.B. Klicks) mittels JavaScript.
- Verstehen, was JavaScript ist und wie es in Webseiten eingebunden wird.
Beispiele
Style ändern
<ul>
<li>Apfel</li>
<li>Banane</li>
<li>Orange</li>
</ul>
<button onclick="changeColor()">
Farbe ändern
</button>
<script>
function changeColor() {
const items = document.querySelectorAll('li');
items.forEach(item => {
item.style.color = 'red';
});
}
</script>
- Z. 6
- Das
onclick-Attribut im<button>-Tag ruft die FunktionchangeColor()auf, wenn der Button geklickt wird. - Z. 9
- Mit dem
<script>-Tag wird JavaScript-Code in das HTML-Dokument eingebunden. Hier gilt eine andere Syntax als bei HTML und CSS. - Z. 10
- Die Funktion
changeColor()wird definiert. Der Funktionsname kann frei gewählt werden, muss aber mit dem imonclick-Attribut übereinstimmen.- Die runden Klammern
()gehen leicht vergessen, sind aber notwendig, um anzuzeigen, dass es sich um eine Funktion handelt. - Die runden Klammern
- Z. 11
document.querySelectorAll('li')wählt alle<li>-Elemente im Dokument aus und speichert sie in der Variablenitems.itemsenthält also eine Liste mit den drei Listenelementen[<li>Apfel</li>, <li>Banane</li>, <li>Orange</li>].- Z. 12
- mit
items.forEach(...)wird für jedes Element in der Liste eine Aktion ausgeführt, wobei das aktuell prozessierte Element überitemzugänglich ist. - Z. 13
- Mit
item.style.color = 'red';wird die Textfarbe des aktuellen Listenelements auf Rot gesetzt.- Die Punkte können als Schritte verstanden werden:
itemsteht für das aktuelle Listenelement (z.B.<li>Apfel</li>)..stylegreift auf die CSS-Stile des Elements zu, also z.B. auf<li style="...">Apfel</li>- Die Eigenschaft
colorwird auf'red'gesetzt, also<li style="color: red;">Apfel</li>.
Schreibweisein JavaScript wird
.color = 'red'mit einem Gleichheitszeichen und Anführungszeichen um'red'verwendet, während in CSScolor: red;geschrieben wird. - Die Punkte können als Schritte verstanden werden:
Einmal geklickt, ändert sich die Farbe aller Listenelemente zu Rot, aber beim erneuten Klicken passiert nichts mehr. Dies soll angepasst werden - die Farbe soll bei jedem Klick wechseln.
<ul>
<li>Apfel</li>
<li>Banane</li>
<li>Orange</li>
</ul>
<button onclick="changeColor()">
Farbe ändern
</button>
<script>
function changeColor() {
const items = document.querySelectorAll('li');
items.forEach(item => {
if (item.style.color == 'red') {
item.style.color = 'black';
} else {
item.style.color = 'red';
}
});
}
</script>
- Z. 13-18
- Es wurde eine
if-Abfrage hinzugefügt, die prüft, ob die Farbe des Listenelements bereits Rot ist.- Mit dem
==Operator wird auf Gleichheit geprüft, da der=Operator bereits für Zuweisungen (style.color = 'red') verwendet wird.- Es beantwortet also die Frage: "Ist die Farbe Rot?" - wenn Ja, mache Z.14, sonst (
else) Z.16. - Mit dem
- Z. 14
- Die Farbe wird auf Schwarz gesetzt.
- Z. 16
- Die Farbe wird auf Rot gesetzt.
Klasse ändern
<style>
ul {
list-style-type: "⬜";
.checked {
list-style-type: "✅";
text-decoration: line-through;
color: gray;
}
}
</style>
<h1>Meine Liste</h1>
<ul>
<li>Apfel</li>
<li>Banane</li>
<li>Orange</li>
</ul>
<script>
document.querySelectorAll('li').forEach(element => {
element.onclick = function toggle() {
element.classList.toggle('checked');
};
});
</script>
- Z. 3
- Das Standard Listensymbol wird mit
list-style-type: "⬜";auf ein weisses Quadrat gesetzt. - Z. 4-8
- Die CSS-Klasse
.checkedwird definiert, die- das Listensymbol auf ein grünes Häkchen ändert,
- den Text durchstreicht und
- die Textfarbe auf Grau ändert.
- Z. 18
- Es wird wiederum über alle Listenelemente iteriert - das aktuelle Element ist über
elementzugänglich. - Z. 19
- Damit nicht händisch für jedes Listenelement ein
onclick-Attribut gesetzt werden muss, wird dies hier programmgesteuert gemacht.- Für jedes Listenelement wird die
onclick-Eigenschaft auf die Funktiontogglegesetzt, die beim Klicken ausgeführt wird. - Für jedes Listenelement wird die
- Z. 20
element.classList.toggle('checked');fügt die CSS-Klassecheckedhinzu (also<li class="checked">), wenn sie nicht vorhanden ist, und entfernt sie, wenn sie bereits vorhanden ist.
Ressourcen aufteilen
Bisher wurden alle Elemente - HTML, CSS und jetzt auch JavaScript - in einer einzigen HTML-Datei definiert. Dies ist für kleine Beispiele in Ordnung, aber bei grösseren Webseiten wird es schnell unübersichtlich. Wie können die Ressourcen aufgeteilt werden?
HTML ist die Grundlage einer Webseite, die HTML-Datei wird immer als erstes angefordert und geladen. CSS und JavaScript können in separaten Dateien ausgelagert werden und dann von der HTML-Datei eingebunden werden. Da die Einbindung von CSS und JavaScript nichts mit dem eigentlichen Inhalt der Webseite zu tun hat, werden diese Dateien im <head>-Bereich der HTML-Datei eingebunden. Der spezielle HTML-Tag <link> wird für die Einbindung von CSS-Dateien verwendet, während das <script>-Tag für die Einbindung von JavaScript-Dateien verwendet wird.
<html>
<head>
<link rel="stylesheet" href="./styles.css">
<script src="./script.js" defer></script>
</head>
<body>
<h1>Willkommen auf meiner Webseite</h1>
<p>Dies ist ein Beispiel für eine Webseite mit ausgelagertem CSS und JavaScript.</p>
</body>
</html>
- Z. 3
- Mit dem
<link>-Tag wird die CSS-Dateistyles.csseingebunden. Dasrel="stylesheet"-Attribut gibt an, dass es sich um ein Stylesheet handelt, und dashref-Attribut gibt den Pfad zur lokalen CSS-Datei an. Wie bei bildern können hier lokale oder externe Pfade angegeben werden. - Z. 4
- Mit dem
<script>-Tag wird die JavaScript-Dateiscript.jseingebunden. Dassrc-Attribut gibt den Pfad zur lokalen JavaScript-Datei an.- Das
defer-Attribut sorgt dafür, dass das JavaScript erst ausgeführt wird, wenn das HTML-Dokument vollständig geladen ist. Dies verhindert Fehler, die auftreten können, wenn das JavaScript versucht, auf HTML-Elemente zuzugreifen, die noch nicht geladen wurden. - Das
- Projekt-Ordner
- OneDrive/Informatik/js-fun
- Inhalts-Struktur
js-fun
├── index.html
├── script.js
└── styles.css
- Schritt 1
Erstellen Sie die drei Dateien im angegebenen Ordner und öffnen Sie js-fun/ in VS-Code.
Zusammenfassung
- JavaScript ermöglicht interaktive und dynamische Inhalte auf Webseiten.
- Webseiten-Projekte können übersichtlicher strukturiert werden, indem HTML, CSS und JavaScript in separate Dateien ausgelagert werden.
- Einbindungen werden im
<head>-Bereich der HTML-Datei vorgenommen. - CSS-Dateien werden mit dem
<link>-Tag eingebunden, z.B.<link rel="stylesheet" href="./styles.css"> - JavaScript-Dateien werden mit dem
<script>-Tag eingebunden, mit demdefer-Attribut wird sichergestellt, dass alle Webseiten-Inhalte bereits geladen sind wenn das Skript ausgeführt wird. Beispiel<script src="./script.js" defer></script>
- Einbindungen werden im