--- marp: true theme: gaia paginate: true backgroundColor: #fff header: "Grundlagen IT- und Internettechnik (223015c)" footer: "Michael Czechowski – HdM Stuttgart – WS 2025/26" title: "Kapitel 3: Interaktivität & JavaScript" ---  # Grundlagen IT- und Internettechnik **223015c** · Modul "Technik 1" · 1. Semester Digital- und Medienwirtschaft Hochschule der Medien Stuttgart **Wintersemester 2025/26** [https://librete.ch/hdm/223015c/](https://librete.ch/hdm/223015c/) ---  --- # Kapitel 3 – 24.01.2026 ## Interaktivität & JavaScript --- # Agenda **Teil 1:** JavaScript-Grundlagen **Teil 2:** Das DOM **Teil 3:** Events **Teil 4:** Projekt & Ausblick --- # Teil 1: JavaScript-Grundlagen ## Die Sprache des Webs --- # Was ist JavaScript? **Die einzige Programmiersprache, die im Browser läuft!** - **1995:** In 10 Tagen entwickelt (Brendan Eich, Netscape) - **Heute:** Überall – Browser, Server, Apps, IoT **Nicht verwechseln:** - Java ≠ JavaScript (komplett unterschiedlich!) - "JavaScript ist zu Java wie Carpet zu Car" --- # JavaScript-Timeline | Jahr | Meilenstein | |------|-------------| | **1995** | JavaScript erfunden (Netscape) | | **1997** | ECMAScript-Standard (ECMA-262) | | **2005** | AJAX revolutioniert Web (Gmail, Google Maps) | | **2008** | V8 Engine (Chrome) – JS wird schnell | | **2009** | Node.js – JS auf dem Server | | **2015** | ES6 – Modernes JavaScript | --- # JavaScript einbinden **Option 1: Externe Datei (empfohlen!)** ```html
``` **Option 2: Inline** ```html ``` ⚠️ Script am **Ende** des `` – damit HTML zuerst lädt! --- # Die Konsole: Euer bester Freund **Browser DevTools → Console** - Windows/Linux: `F12` oder `Strg+Shift+I` - Mac: `Cmd+Option+I` ```javascript console.log("Hallo Welt!"); console.log(42); console.log("Die Antwort ist:", 42); ``` **Direkt in der Konsole tippen und Enter!** --- # Variablen: Daten speichern ```javascript // Modern (empfohlen) let age = 25; // Kann geändert werden const name = "Max"; // Konstante (nicht änderbar) // Alt (vermeiden!) var city = "Stuttgart"; // Problematisches Scoping ``` **Regeln:** - Beginnt mit Buchstabe, `_` oder `$` - Keine Leerzeichen, keine Sonderzeichen - Case-sensitive: `name` ≠ `Name` --- # Datentypen ```javascript // String (Text) const text = "Hello"; const text2 = 'World'; const text3 = `Hello ${text2}`; // Template Literal // Number (Zahl) const integer = 42; const decimal = 3.14; // Boolean (Wahrheitswert) const isTrue = true; const isFalse = false; // Undefined & Null let unknown; // undefined const nothing = null; // null (bewusst leer) ``` --- # Arrays: Listen ```javascript const colors = ["red", "green", "blue"]; // Zugriff (0-basiert!) console.log(colors[0]); // "red" console.log(colors[2]); // "blue" // Länge console.log(colors.length); // 3 // Hinzufügen/Entfernen colors.push("yellow"); // Am Ende hinzufügen colors.pop(); // Letztes entfernen ``` --- # Objects: Strukturierte Daten ```javascript const person = { firstName: "Max", lastName: "Smith", age: 25, hobbies: ["Reading", "Sports"] }; // Zugriff console.log(person.firstName); // "Max" console.log(person["lastName"]); // "Smith" // Ändern/Hinzufügen person.age = 26; person.job = "Student"; ``` --- # Operatoren ```javascript // Arithmetik 5 + 3 // 8 (Addition) 5 - 3 // 2 (Subtraktion) 5 * 3 // 15 (Multiplikation) 5 / 3 // 1.666... (Division) 5 % 3 // 2 (Modulo/Rest) 5 ** 3 // 125 (Potenz) // Vergleich 5 === 3 // false (strikt gleich) 5 !== 3 // true (strikt ungleich) 5 > 3 // true 5 >= 3 // true // Logisch true && false // false (UND) true || false // true (ODER) !true // false (NICHT) ``` --- # Hands-On: Variablen & Konsole (20 Min) **In der Browser-Konsole:** 1. Erstelle Variablen für dich: ```javascript const name = "Your Name"; let age = 20; const hobbies = ["Hobby1", "Hobby2"]; ``` 2. Gib sie aus: ```javascript console.log(`I am ${name}, ${age} years old.`); console.log("My hobbies:", hobbies); ``` 3. Erstelle ein `person`-Objekt und greife auf Properties zu --- # Funktionen: Code wiederverwenden ```javascript // Funktion definieren function greet(name) { return `Hello ${name}!`; } // Funktion aufrufen const message = greet("Max"); console.log(message); // "Hello Max!" // Arrow Function (modern) const add = (a, b) => { return a + b; }; // Kurzform (bei einem Ausdruck) const double = x => x * 2; ``` --- # Kontrollstrukturen: if/else ```javascript const age = 18; if (age >= 18) { console.log("Adult"); } else if (age >= 16) { console.log("Almost adult"); } else { console.log("Minor"); } // Ternärer Operator (Kurzform) const status = age >= 18 ? "Adult" : "Child"; ``` --- # Schleifen: Wiederholen ```javascript // for-Schleife for (let i = 0; i < 5; i++) { console.log(i); // 0, 1, 2, 3, 4 } // for...of (Arrays) const colors = ["red", "green", "blue"]; for (const color of colors) { console.log(color); } // forEach (Array-Methode) colors.forEach(color => console.log(color)); ``` --- # Nützliche Array-Methoden ```javascript const numbers = [1, 2, 3, 4, 5]; // map: Transformieren const doubled = numbers.map(x => x * 2); // [2, 4, 6, 8, 10] // filter: Filtern const large = numbers.filter(x => x > 2); // [3, 4, 5] // find: Erstes Element finden const found = numbers.find(x => x > 3); // 4 // reduce: Aggregieren const sum = numbers.reduce((acc, x) => acc + x, 0); // 15 ``` --- # Hands-On: Funktionen & Schleifen (30 Min) **Erstellt `script.js`:** 1. Funktion die prüft ob Zahl gerade ist: ```javascript function isEven(num) { /* your code */ } ``` 2. Funktion die Array-Summe berechnet 3. FizzBuzz: 1-10 ausgeben, "Fizz" bei /3, "Buzz" bei /5 **Tipp:** `num % 2 === 0` prüft ob gerade --- # Teil 2: Das DOM ## HTML mit JavaScript manipulieren --- # Was ist das DOM? **D**ocument **O**bject **M**odel - Browser parst HTML → Baumstruktur - JavaScript kann diesen Baum **lesen und ändern** - Jedes HTML-Element = ein "Node" ``` document └── html ├── head │ └── title └── body ├── h1 └── p ``` --- # Elemente finden ```javascript // Einzelnes Element (erstes gefundene) document.getElementById("meinId"); document.querySelector(".meineKlasse"); document.querySelector("nav > a"); // Mehrere Elemente (NodeList) document.getElementsByClassName("meineKlasse"); document.querySelectorAll("p"); // Beispiel const titel = document.querySelector("h1"); console.log(titel.textContent); // Text auslesen ``` --- # Elemente manipulieren ```javascript const element = document.querySelector("#meinElement"); // Text ändern element.textContent = "Neuer Text"; element.innerHTML = "HTML möglich"; // Attribute ändern element.setAttribute("class", "neu"); element.id = "neueId"; element.href = "https://example.com"; // Styles ändern element.style.color = "red"; element.style.backgroundColor = "blue"; element.style.display = "none"; // Verstecken ``` --- # Klassen manipulieren ```javascript const element = document.querySelector(".box"); // Klasse hinzufügen element.classList.add("aktiv"); // Klasse entfernen element.classList.remove("inaktiv"); // Klasse umschalten element.classList.toggle("sichtbar"); // Klasse prüfen if (element.classList.contains("aktiv")) { console.log("Element ist aktiv"); } ``` --- # Elemente erstellen ```javascript // Neues Element erstellen const neuerAbsatz = document.createElement("p"); neuerAbsatz.textContent = "Ich bin neu!"; neuerAbsatz.classList.add("highlight"); // In DOM einfügen const container = document.querySelector("#container"); container.appendChild(neuerAbsatz); // Am Ende container.prepend(neuerAbsatz); // Am Anfang container.insertBefore(neuerAbsatz, anderesElement); // Element entfernen neuerAbsatz.remove(); ``` --- # Hands-On: DOM manipulieren (30 Min) **HTML:** ```html