Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| kurse:ef05a-2021:js:htmlmanip [2022/02/04 20:04] – [DOM-Manip ohne globale Variablen und nötiger User-Interaktion] Ivo Blöchliger | kurse:ef05a-2021:js:htmlmanip [2022/02/16 08:17] (current) – [Aufgaben] Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== DOM-Manipulationen ====== | ||
| + | DOM steht für //Document Object Model// und erlaubt es, jedes Element auf einer HTML-Seite direkt anzusprechen, | ||
| + | |||
| + | Damit eine Manipulation möglich ist, muss allerdings sichergestellt werden, dass die Seite vollständig geladen, **bevor** der eigene Code ausgeführt wird. Ansonsten existieren die gewünschten HTML noch gar nicht. Das ist z.B. gesichert, wenn der Benutzer erst die Ausführung vom Code anstösst, indem er z.B. auf einen Knopf drückt. | ||
| + | |||
| + | ===== DOM-Manip nach User-Interaktion, | ||
| + | |||
| + | <code html> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <meta charset=" | ||
| + | < | ||
| + | <script src=" | ||
| + | </ | ||
| + | < | ||
| + | <h1 id=" | ||
| + | <button onclick=" | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <code javascript dom-manip.js> | ||
| + | // Globale Variable :-( | ||
| + | counter = 0; | ||
| + | |||
| + | function losgehts() { | ||
| + | counter+=1; | ||
| + | document.getElementById(" | ||
| + | document.getElementById(" | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== DOM-Manip ohne globale Variablen und nötiger User-Interaktion ===== | ||
| + | |||
| + | <code html> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <meta charset=" | ||
| + | < | ||
| + | <script src=" | ||
| + | </ | ||
| + | < | ||
| + | <h1 id=" | ||
| + | <button id=" | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <code javascript dom-manip.js> | ||
| + | // Funktion ausführen, wenn alles geladen ist | ||
| + | window.addEventListener(' | ||
| + | // lokale Variable, verfügbar in inneren Funktionen | ||
| + | let counter = 0; | ||
| + | |||
| + | // Damit sich der Code ein bisschen einfacher liest | ||
| + | let counterSpan = document.getElementById(" | ||
| + | let seitenTitel = document.getElementById(" | ||
| + | let knopf = document.getElementById(" | ||
| + | |||
| + | setTimeout(function() { | ||
| + | seitenTitel.innerHTML = "Viel besserer Titel!"; | ||
| + | }, 1000); // Nach einer Sekunde den Titel ändern | ||
| + | |||
| + | // onlick-Event auf dem Knopf registrieren | ||
| + | knopf.addEventListener(' | ||
| + | if (counter==0) { | ||
| + | console.log(" | ||
| + | console.log(this); | ||
| + | console.log(" | ||
| + | console.log(event); | ||
| + | } | ||
| + | if (counter< | ||
| + | counter++; | ||
| + | counterSpan.innerHTML = counter; | ||
| + | } else { | ||
| + | seitenTitel.innerHTML = "Jetzt reichts aber!"; | ||
| + | knopf.disabled = true; | ||
| + | } | ||
| + | }); | ||
| + | |||
| + | }); | ||
| + | </ | ||
| + | |||
| + | ====== Aufgaben ====== | ||
| + | Ziel ist es, alle Umrechnungstools auf einer Seite platzieren zu können. Dazu soll Ihre Seite folgenden Konventionen genügen: | ||
| + | * Der nötige HTML-Code wird von Ihrem JavaScript-Code dem Element ''< | ||
| + | * Ihr ganzer HTML-Code wird in ein eigenes '' | ||
| + | * Die Elemente sollen dabei mit z.B. '' | ||
| + | * Sämtlicher Code ist im Callback für wenn die Seite geladen ist. | ||
| + | * Ein eventuelles CSS wird dynamisch eingebunden. | ||
| + | * CallBacks werden direkt beim Erzeugen der einzelnen Elemente eingetragen. | ||
| + | * Beispielseite: | ||
| + | <WRAP todo> | ||
| + | Programmieren Sie eine Webseite, die eine Um- oder Berechnung anbietet. Z.B. | ||
| + | * Umrechnung von $^\circ$C nach $^\circ$F (und/oder umgekehrt). Siehe dazu auch: | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * Berechnung des BMI aus Grösse und Körpergewicht. | ||
| + | * Berechnung des eigenen Alters in Tagen, siehe dazu auch folgende Seiten | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * Weitere, eigene Ideen. | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||