This commit is contained in:
1
01_grundlagen/faq/substr.js
Normal file
1
01_grundlagen/faq/substr.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
'test'.substr(1);
|
||||||
106
01_grundlagen/uebungen/#u19-u20-quiz-1.html
Normal file
106
01_grundlagen/uebungen/#u19-u20-quiz-1.html
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 19 und 20: Die dunkle Seite von JavaScript</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h2>Übung 19: Die dunkle Seite von JavaScript</h2>
|
||||||
|
<p>
|
||||||
|
Programmieren Sie nun Stück für Stück ein kleines Quiz, in dem ein Spieler Fragen zu JS beantworten muss und
|
||||||
|
damit gegen Fehler und schlechten Code — also die dunkle Seite von JS — antritt. Möge der Source mit Ihnen
|
||||||
|
sein.
|
||||||
|
</p>
|
||||||
|
<ol class="list">
|
||||||
|
<li>
|
||||||
|
<p>
|
||||||
|
Als ersten Schritt fragen Sie den Spieler nach seinem Namen, speichern diesen in eine Variable und
|
||||||
|
begrüßen ihn mittels einer Alert-Box. Ergänzen Sie den folgenden Code:
|
||||||
|
</p>
|
||||||
|
<pre>
|
||||||
|
<code> 'use strict'; let username = … alert(…); </code></pre>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>
|
||||||
|
Stellen Sie dem Spieler die Frage, ob er sich fit genug fühlt, um gegen das dunkle JavaScript
|
||||||
|
anzutreten. Es ist sinnvoll, bei der Frage die Antwortmöglichkeiten anzugeben. Die Antwort speichern Sie
|
||||||
|
in einer neuen Variable und erstellen als Nächstes eine
|
||||||
|
<code>if</code>-Verzweigung. Der Rumpf des <code>if</code> soll nur ausgewertet werden, wenn der Spieler
|
||||||
|
bestätigt, dass er sich stark genug fühlt, das Spiel zu beginnen. In den Rumpf schreiben wir ein
|
||||||
|
<code>alert</code>, das den Spielstart bestätigt und den Spieler anfeuert.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Für den Fall, dass der Spieler zu feige ist und einen mangelnden Fitness-Grad angegeben hat, schreiben
|
||||||
|
Sie eine weitere
|
||||||
|
<code>if</code>-Verzweigung, die den Fall abfängt und den Spieler mit Schimpf und Schande verabschiedet.
|
||||||
|
Natürlich dürfen Sie auch freundlich bleiben — ganz wie Sie mögen.
|
||||||
|
</p>
|
||||||
|
<blockquote>
|
||||||
|
<strong>Tipp:</strong> Schon während Sie das Programm entwickeln, sollten Sie es immer wieder testen.
|
||||||
|
Führen Sie nach jeder Änderung das Programm erneut aus!
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>
|
||||||
|
Nun kann es losgehen. Stellen Sie den Spieler vor seine erste Aufgabe. Deklarieren Sie nach dem alert
|
||||||
|
eine neue Variable, in der Sie die Antwort des Spielers zu folgender Frage speichern:<br />
|
||||||
|
<code>»Which Operator has the higher priority: * or + ?«</code>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Um auf die Antwort reagieren zu können, schreiben Sie eine weitere
|
||||||
|
<code>if</code>-Verzweigung, deren Rumpf nur ausgewertet wird, wenn die Antwort stimmt.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>alert</code> gratuliert hier zur korrekten Antwort. Wenn Sie mögen, können Sie noch weitere
|
||||||
|
Verzweigungen mit Fragen einbauen.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>
|
||||||
|
Fügen Sie ein weiteres <code>if</code> für die Variante ein, in der der Spieler eine falsche Antwort
|
||||||
|
gibt.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h2>Übung 20: Die dunkle Seite von JavaScript</h2>
|
||||||
|
<p>
|
||||||
|
Für Ihr Spiel ist else ebenfalls hilfreich. Zum Beispiel bei der Frage, ob der Spieler bereit zum Spielen
|
||||||
|
ist. Statt hier ein zweites
|
||||||
|
<code>if</code> einzubauen, können Sie <code>else</code> verwenden.
|
||||||
|
</p>
|
||||||
|
<p>Ersetzen Sie die <code>if</code>-Anweisungen an den richtigen Stellen durch ein <code>else</code>:</p>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h2>Übung 23: Die dunkle Seite schlägt zurück…</h2>
|
||||||
|
<p>
|
||||||
|
Endlich setzen Sie Ihren Kampf gegen die dunkle Seite von JS fort (siehe Übung 20) und erstellen zwei neue
|
||||||
|
»Kampf-Sequenzen«:
|
||||||
|
</p>
|
||||||
|
<ul class="list">
|
||||||
|
<li>»What's the German word for if« (Mehrere Lösungsmöglichkeiten: wenn, falls).</li>
|
||||||
|
<li>»Now, please enter a string with a length between 8 and 15 characters…«</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const QUESTION_1 = 'Which Operators has the higher priority: * or + ?';
|
||||||
|
const SOLUTION_1 = '*';
|
||||||
|
|
||||||
|
// 1.Als ersten Schritt fragen Sie den Spieler nach seinem Namen, speichern diesen in eine Variable und begrüßen ihn mittels einer Alert-Box.
|
||||||
|
|
||||||
|
// 2.Stellen Sie dem Spieler die Frage, ob er sich fit genug fühlt, um gegen das dunkle JavaScript anzutreten. Es ist sinnvoll, bei der Frage die Antwortmöglichkeiten anzugeben.
|
||||||
|
|
||||||
|
// 3.Nun kann es losgehen. Stellen Sie den Spieler vor seine erste Aufgabe.
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
44
01_grundlagen/uebungen/#u21_schaltjahr.html
Normal file
44
01_grundlagen/uebungen/#u21_schaltjahr.html
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 21: Die Sache mit dem Schaltjahr</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h2>Übung 21: Die Sache mit dem Schaltjahr</h2>
|
||||||
|
<p>
|
||||||
|
Vielleicht gehören Sie zu den Menschen, die »die Sache mit dem Schaltjahr« spannend finden. Und falls Sie es
|
||||||
|
nicht spannend finden, schreiben Sie einfach trotzdem ein Programm, das berechnet, ob es sich bei einem Jahr
|
||||||
|
um ein Schaltjahr handelt.
|
||||||
|
</p>
|
||||||
|
<p>Fragen Sie den Anwender nach dem gewünschten Jahr und speichern Sie die Eingabe in einer Variable.</p>
|
||||||
|
<p>
|
||||||
|
Falls das betreffende Jahr ein Schaltjahr ist, soll die Konsole z.B. den Satz »0000 ist ein Schaltjahr!«
|
||||||
|
ausgeben; ansonsten »0000 ist KEIN Schaltjahr« — mit dem eingegeben Jahr statt 0000.
|
||||||
|
</p>
|
||||||
|
<h4>Ein Jahr ist ein Schaltjahr, wenn das betreffende Jahr</h4>
|
||||||
|
<ul>
|
||||||
|
<li>ganzzahlig durch 400 teilbar ist.</li>
|
||||||
|
<li>nicht ganzzahlig durch 100, aber ganzzahlig durch 4 teilbar ist.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="alert alert-warning">
|
||||||
|
Die Berechnung ist übrigens nicht zu 100 Prozent genau, aber für die nächsten 2000 Jahre passt es noch.
|
||||||
|
</div>
|
||||||
|
<div class="output alert alert-secondary my-3"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const year = Number(prompt('please enter year:'));
|
||||||
|
const outputEl = document.querySelector('.output');
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
43
01_grundlagen/uebungen/#u22-23-if-else-quiz-2.html
Normal file
43
01_grundlagen/uebungen/#u22-23-if-else-quiz-2.html
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 22: Die dunkle Seite schlägt zurück …</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>Übung 22: Die dunkle Seite schlägt zurück …</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Endlich setzt du deinen Kampf gegen die dunkle Seite von JS fort (siehe Übung 20) und erstellst zwei neue
|
||||||
|
»Kampf-Sequenzen«:
|
||||||
|
</p>
|
||||||
|
<p>»What's the German word for if« (Mehrere Lösungsmöglichkeiten: wenn, falls).</p>
|
||||||
|
<p>»Now, please enter a string with a length between 8 and 15 characters …«</p>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h2>Übung 23: Die dunkle Seite schlägt zurück…</h2>
|
||||||
|
<p>
|
||||||
|
Endlich setzen Sie Ihren Kampf gegen die dunkle Seite von JS fort (siehe Übung 20) und erstellen zwei neue
|
||||||
|
»Kampf-Sequenzen«:
|
||||||
|
</p>
|
||||||
|
<ul class="list">
|
||||||
|
<li>»What's the German word for if« (Mehrere Lösungsmöglichkeiten: wenn, falls).</li>
|
||||||
|
<li>»Now, please enter a string with a length between 8 and 15 characters…«</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// const username = prompt('Wilkommen. Wie heißen Sie?');
|
||||||
|
|
||||||
|
/*
|
||||||
|
TODO: Your Code
|
||||||
|
*/
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
55
01_grundlagen/uebungen/#u24_leap-year-2.html
Normal file
55
01_grundlagen/uebungen/#u24_leap-year-2.html
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 24: Die Sache mit dem Schaltjahr — Teil 2</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h2>Übung 24: Die Sache mit dem Schaltjahr — Teil 2</h2>
|
||||||
|
<p>
|
||||||
|
Verschaffe deinem Schaltjahr-Tool aus Lektion 10 ein Facelifting. Mithilfe der logischen Operatoren kannst
|
||||||
|
du einige <code>else</code> einsparen und den Code einfacher, kürzer und übersichtlicher gestalten.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>Ein Jahr ist ein Schaltjahr, wenn das betreffende Jahr</h4>
|
||||||
|
<ul>
|
||||||
|
<li>ganzzahlig durch 400 teilbar ist.</li>
|
||||||
|
<li>nicht ganzzahlig durch 100, aber ganzzahlig durch 4 teilbar ist.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-warning">
|
||||||
|
Die Berechnung ist übrigens nicht zu 100 Prozent genau, aber für die nächsten 2000 Jahre passt es noch.
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="input-year" class="form-label">Jahr</label>
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
min="0"
|
||||||
|
step="1"
|
||||||
|
name="year"
|
||||||
|
class="form-control input-year"
|
||||||
|
id="input-year"
|
||||||
|
placeholder="insert year..." />
|
||||||
|
</div>
|
||||||
|
<div class="output alert alert-secondary my-3"></div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const inputEl = document.querySelector('.input-year');
|
||||||
|
const outputEl = document.querySelector('.output');
|
||||||
|
|
||||||
|
inputEl.addEventListener('input', (e) => {
|
||||||
|
const val = e.currentTarget.value;
|
||||||
|
|
||||||
|
// TODO: check if it is a leap year or not.
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
46
01_grundlagen/uebungen/#u25_suche-im-heuhaufen.html
Normal file
46
01_grundlagen/uebungen/#u25_suche-im-heuhaufen.html
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 25: Wenn sie doch endlich mal jemand finden könnte… die Nadel im Heuhaufen…</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h1>Übung 25: Wenn sie doch endlich mal jemand finden könnte… die Nadel im Heuhaufen…</h1>
|
||||||
|
<p>
|
||||||
|
Die meisten Menschen verwenden die Redewendung nur symbolisch. Sie heute aber nicht, denn Sie erhalten von
|
||||||
|
uns den Auftrag, die Nadel wirklich zu finden!
|
||||||
|
</p>
|
||||||
|
<img
|
||||||
|
src="https://de.webmasters-europe.org/system/course_management/file/images/files/000/014/031/640-426/251d5925f63d895854646ece67dc3de4.jpg?1617534590"
|
||||||
|
alt=""
|
||||||
|
style="width: 300px"
|
||||||
|
class="img-thumbnail" />
|
||||||
|
<p>
|
||||||
|
Natürlich wollen wir Sie nicht wirklich im Heu wühlen lassen. Stattdessen erhalten Sie von uns einen
|
||||||
|
sauberen heulosen String. Das ist vermutlich auch angenehmer, falls Sie an Heuschnupfen leiden
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Finden Sie nun heraus, an welcher Position sich die Nadel befindet, und loggen Sie diese Position in die
|
||||||
|
Konsole.
|
||||||
|
</p>
|
||||||
|
<blockquote class="blockquote">Übrigens: Zählen gilt nicht!</blockquote>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="output alert alert-secondary"></div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const outputEl = document.querySelector('.output');
|
||||||
|
|
||||||
|
const text =
|
||||||
|
'Heuhaufen Heuhaufen Heuhaufen Heuhaufen Heuhaufen Heuhaufen Heuhaufen Nadel Heuhaufen Heuhaufen Heuhaufen Heuhaufen Heuhaufen Heuhaufen Heuhaufen Heuhaufen Heuhaufen';
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
32
01_grundlagen/uebungen/#u26_vornamen-auslesen.html
Normal file
32
01_grundlagen/uebungen/#u26_vornamen-auslesen.html
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 26: Wenn ein Vorname nicht reicht…</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h1>Übung 26: Wenn ein Vorname nicht reicht…</h1>
|
||||||
|
<p>
|
||||||
|
Vielleicht ist Ihnen aufgefallen, dass die Zerlegung nur richtig funktioniert, wenn der Name in der Form
|
||||||
|
'Vorname Nachname' vorliegt.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Sollte ein Nutzer einen zweiten Vornamen angeben, ordnet das Programm den zweiten Vorname dem Nachnamen zu.
|
||||||
|
Sie würden für den Namen Ladislaus Coolio Jones fälschlicherweise Folgendes erhalten:
|
||||||
|
</p>
|
||||||
|
<p>Korrigieren Sie die Ausgabe des folgenden Codes mithilfe von lastIndexOf</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const name = ' Ladislaus Coolio Jones '.trim();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
BIN
01_grundlagen/uebungen/uebungen-19-26.zip
Normal file
BIN
01_grundlagen/uebungen/uebungen-19-26.zip
Normal file
Binary file not shown.
@@ -0,0 +1,30 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 27: Der zerlegte Heribert</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary my-3">
|
||||||
|
<h1>Übung 27: Der zerlegte Heribert</h1>
|
||||||
|
<ol>
|
||||||
|
<li>Entfernen Sie die überflüssigen Leerzeichen.</li>
|
||||||
|
<li>Zerlegen Sie den Namen in Vor- und Nachnamen.</li>
|
||||||
|
</ol>
|
||||||
|
<div class="alert alert-secondary my-3 output"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const outputElement = document.querySelector('.output');
|
||||||
|
|
||||||
|
const name = 'Heribert Gold '.trim();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 28: Der transformierte Ladislaus</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary my-3">
|
||||||
|
<h1>Übung 28: Der transformierte Ladislaus</h1>
|
||||||
|
<p>Und weil es so viel Freude macht:</p>
|
||||||
|
<p>
|
||||||
|
Speichern Sie den Namen »Ladislaus Jones« in einer Variable und kreieren Sie eine Ausgabe nach dem Schema
|
||||||
|
'<code><Nachname></code>, <code><Anfangsbuchstabe des Vornamens></code>.', also
|
||||||
|
<code>'Jones, L.'</code>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="alert alert-secondary output"></div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
const outputEl = document.querySelector('.output');
|
||||||
|
|
||||||
|
const name = 'Ladislaus Jones'.trim();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 29: Führende Nullen, Teil 1</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary my-5">
|
||||||
|
<h1>Übung 29: Führende Nullen, Teil 1</h1>
|
||||||
|
<p>
|
||||||
|
NerdWorld hat vor einiger Zeit sein Artikelnummer-Konzept geändert. Die neuen Artikelnummern beginnen stets
|
||||||
|
mit einer 0 — z.B. 0123. Leider gibt es bei den alten Nummern viele, die nicht über eine führenden 0
|
||||||
|
verfügen. Sie können aber auch nicht einfach pauschal eine 0 ergänzen, da manche der alten Nummern bereits
|
||||||
|
mit einer 0 beginnen. In dem Fall soll keine weitere 0 vorangestellt werden. Ergänzen Sie das folgende
|
||||||
|
Programmfragment, so dass es für jede Belegung der Variable itemNumber (Artikelnummer) die richtige Nummer
|
||||||
|
im neuen Konzept ausgibt. Verwenden Sie dazu den ternären Operator!
|
||||||
|
</p>
|
||||||
|
<ul class="list">
|
||||||
|
<li>123 => 0123</li>
|
||||||
|
<li>7 => 07</li>
|
||||||
|
<li>07 => 07</li>
|
||||||
|
<li>007 => 007</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
let itemNumber = '123';
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 30: Die dunkle Seite von JavaScript — der Kampf geht weiter</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h1>Übung 30: Die dunkle Seite von JavaScript — der Kampf geht weiter</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Es wird Zeit, das Spiel weiter zu optimieren. Nimm dir eine der Fragen vor, die schon implementiert ist:
|
||||||
|
</p>
|
||||||
|
<p>»Was heißt if auf Deutsch?« (Mehrere Lösungsmöglichkeiten: wenn, falls).</p>
|
||||||
|
<p>
|
||||||
|
Der Code deckt schon drei verschiedene Lösungsmöglichkeiten ab. Aber was ist, wenn jemand statt
|
||||||
|
<code>wenn</code> <code>Wenn</code> oder <code>WENN</code> schreibt?
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Das Thema Groß- und Kleinschreibung wird dir bei Benutzereingaben öfter begegnen. Für das Spiel würde es zum
|
||||||
|
Beispiel helfen, wenn der Spieler die Eingabe immer komplett kleinschreibt. Sicher ist der Spieler verwirrt,
|
||||||
|
wenn das Spiel seine Antwort Wenn als falsch quittiert.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Optimiere die betreffende Stelle im Spiel, indem du die Benutzereingabe in Kleinbuchstaben umwandelst — vor
|
||||||
|
Prüfung der if-Bedingung.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// const QUESTION_1 = 'es geht los! Sag mir mal, welcher Operator die höhere Priorität hat: * oder + ?';
|
||||||
|
// const SOLUTION_1 = '*';
|
||||||
|
|
||||||
|
// const QUESTION_2 = 'Was ist das deutsche Wort für if?';
|
||||||
|
// const SOLUTION_2A = 'falls';
|
||||||
|
// const SOLUTION_2B = 'wenn';
|
||||||
|
|
||||||
|
// const QUESTION_3 = 'Jetzt gib bitte einen String mit einer Länge von 8 bis 15 Zeichen ein';
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 31: In die Konsole geloggt, Teil 2</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>Übung 31: In die Konsole geloggt, Teil 2</h1>
|
||||||
|
<p>Schreiben Sie eine Funktion, die Ihren Namen in der Konsole ausgibt.</p>
|
||||||
|
<div class="output alert alert-secondary my-3"></div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const outputEl = document.querySelector('.output');
|
||||||
|
|
||||||
|
/*
|
||||||
|
TODO: Schreibe eine Funktion, die deinen Namen in der Konsole ausgibt.
|
||||||
|
*/
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 32: Der transformierte Ladislaus, Teil 2</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h1>Übung 32: Der transformierte Ladislaus, Teil 2</h1>
|
||||||
|
<p>
|
||||||
|
Schreiben Sie eine Funktion <code>logTransformedName</code>, die Vor- und Nachname als Parameter
|
||||||
|
entgegennimmt und einen String der Form
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code><Nachname>, <Anfangsbuchstabe des Vornamens>.</code>
|
||||||
|
</p>
|
||||||
|
<p>ausgibt.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
113
01_grundlagen/uebungen/uebungen-27-35/u33_newsletter.html
Normal file
113
01_grundlagen/uebungen/uebungen-27-35/u33_newsletter.html
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 33: Hello, dear ${recipient}</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h2>Übung 33: Hello, dear ${recipient}</h2>
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
<p>
|
||||||
|
Stell dir vor, du arbeitest für ein Unternehmen, das Veranstaltungen organisiert. Du sollst für diesen
|
||||||
|
Auftraggeber Einladungen verschicken:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<code>
|
||||||
|
<pre>
|
||||||
|
Dear Heribert,
|
||||||
|
|
||||||
|
Thank you for your registration.
|
||||||
|
|
||||||
|
Event Details:
|
||||||
|
- Event: Tech Conference
|
||||||
|
- Date: July 24
|
||||||
|
- Venue: Main Hall, Conference Center
|
||||||
|
|
||||||
|
We look forward to seeing you at the event!
|
||||||
|
|
||||||
|
Best regards,
|
||||||
|
The Event Team
|
||||||
|
</pre>
|
||||||
|
</code>
|
||||||
|
<p>
|
||||||
|
Programmiere eine Funktion, die eine Einladung, simuliert durch eine Konsolenausgabe, für die Teilnehmer
|
||||||
|
generiert. Dabei soll statt Heribert ein beliebiger Name verwendbar sein.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>Folgende Aufrufe erfolgen später aus der Datenbank:</p>
|
||||||
|
<code>
|
||||||
|
<pre>
|
||||||
|
showInvitationFor('Heribert');
|
||||||
|
showInvitationFor('Goldy');
|
||||||
|
showInvitationFor('Ladislaus');
|
||||||
|
</pre>
|
||||||
|
</code>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>
|
||||||
|
Da unser Auftraggeber verschiedene Veranstaltungen zu verschiedenen Zeitpunkten organisiert, sollen im
|
||||||
|
nächsten Schritt zwei weitere Parameter angegeben werden, in dem die Art der Veranstaltung, sowie ein
|
||||||
|
Datum, jeweils als Text, übergeben wird.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Einen zweiten Parameter kannst du bei der Funktionsdefinition innerhalb der Klammern durch Komma
|
||||||
|
getrennt angeben.
|
||||||
|
</p>
|
||||||
|
<code>
|
||||||
|
<pre>
|
||||||
|
let showInvitationFor = (recipient, event, date) => {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
</pre>
|
||||||
|
</code>
|
||||||
|
<p>
|
||||||
|
Es sind auch weitere Parameter möglich, aber hier benötigst du nur drei. Innerhalb des Rumpfes kannst du
|
||||||
|
die neuen Parameter wie gewohnt wie eine Variable verwenden.
|
||||||
|
</p>
|
||||||
|
<p>Folgende Aufrufe erfolgen später aus der Datenbank:</p>
|
||||||
|
<code>
|
||||||
|
<pre>
|
||||||
|
showInvitationFor('Heribert', 'Tech Conference', 'July 24');
|
||||||
|
showInvitationFor('Goldy', 'Art Workshop', 'August 15');
|
||||||
|
showInvitationFor('Ladislaus', 'Music Festival', 'September 10');
|
||||||
|
</pre>
|
||||||
|
</code>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>
|
||||||
|
Dein Auftraggeber bietet auch einen VIP-Status für Teilnehmer an. Fall ein Teilnehmer diesen Status
|
||||||
|
gebucht hat, soll der einleitende Text der Einladung entsprechend angepasst werden:
|
||||||
|
</p>
|
||||||
|
<h3>Standard-Version</h3>
|
||||||
|
<p><code>Thank you for your registration.</code></p>
|
||||||
|
<h3>VIP-Version</h3>
|
||||||
|
<p><code>You have registered as a VIP! Enjoy exclusive benefits and access to VIP areas.</code></p>
|
||||||
|
<p>Folgende Aufrufe erfolgen später aus der Datenbank:</p>
|
||||||
|
<code>
|
||||||
|
<pre>
|
||||||
|
showInvitationFor('Heribert', 'Tech Conference', 'July 24', true);
|
||||||
|
showInvitationFor('Goldy', 'Art Workshop', 'August 15', false);
|
||||||
|
showInvitationFor('Ladislaus', 'Music Festival', 'September 10', true);
|
||||||
|
</pre>
|
||||||
|
</code>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
TODO: showInvitationFor Function
|
||||||
|
*/
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 34: Der transformierte Ladislaus, Teil 3</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h1>Übung 34: Der transformierte Ladislaus, Teil 3</h1>
|
||||||
|
<p>
|
||||||
|
Schreiben Sie eine Funktion <code>transformName</code>, die Vor- und Nachname als Parameter entgegennimmt
|
||||||
|
und einen String der Form
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code><Nachname>, <Anfangsbuchstabe des Vornamens>.</code>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<h3 class="mt-3">Formular:</h3>
|
||||||
|
<form class="form-transform">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 col-sm-6">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="input-firstname">Vorname:</label>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="firstname"
|
||||||
|
id="input-firstname"
|
||||||
|
placeholder="Vorname eingeben..." />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-sm-6">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="input-lastname">Nachname:</label>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="lastname"
|
||||||
|
id="input-lastname"
|
||||||
|
placeholder="Nachname eingeben..." />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<div class="mb-3">
|
||||||
|
<!-- <input type="submit" value="Transform name" class="btn btn-dark input-transform" /> -->
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn-dark button-transform button">Transform name</button>
|
||||||
|
<button type="reset" class="btn btn-danger button-transform button">resetted</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<h3 class="mt-3">Transformierter Name:</h3>
|
||||||
|
<div class="output alert alert-secondary"></div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const formTransformEl = document.querySelector('.form-transform');
|
||||||
|
const outputEl = document.querySelector('.output');
|
||||||
|
const inputFirstnameEl = document.querySelector('input[name="firstname"]');
|
||||||
|
const inputLastnameEl = document.querySelector('input[name="lastname"]');
|
||||||
|
|
||||||
|
// Funktionsdefinition
|
||||||
|
|
||||||
|
formTransformEl.addEventListener('submit', (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
});
|
||||||
|
|
||||||
|
// console.log(transformName('Max', 'Mustermann')); //=> 'Mustermann, M.'
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 35: Reichweite & Verbrauch, Teil 3</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<div class="alert alert-primary">
|
||||||
|
<h1>Übung 35: Reichweite & Verbrauch, Teil 3</h1>
|
||||||
|
<p>
|
||||||
|
Überarbeiten Sie Reichweite & Verbrauch, Teil 2 (Übung 18). Erstellen Sie passende Funktionen, die die
|
||||||
|
Benutzereingaben zurückgeben.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<section class="section-calculator">
|
||||||
|
<div class="container">
|
||||||
|
<form class="form-calculator" method="get">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 col-sm-6">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="input-strecke" class="form-label">Strecke</label>
|
||||||
|
<input type="number" class="form-control" name="strecke" id="input-strecke" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-sm-6">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="input-benzinmenge" class="form-label">verbrauchte Benzinmenge</label>
|
||||||
|
<input type="number" class="form-control" name="benzinmenge" id="input-benzinmenge" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ▲ /.row ▲ -->
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="input-tankgroesse" class="form-label">Tankgröße</label>
|
||||||
|
<input type="number" class="form-control" name="tangroesse" id="input-tankgroesse" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- ▲ /.row ▲ -->
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<!-- <input type="submit" value="Rechnen" class="btn btn-dark button-calculate" /> -->
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn-dark button-calculate">Rechnen</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div class="alert alert-secondary my-3" id="output"></div>
|
||||||
|
<div class="alert alert-secondary my-3" id="output2"></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// DOM & Variabendeklaration ==
|
||||||
|
const formCalculatorEl = document.querySelector('.form-calculator');
|
||||||
|
const outputAEl = document.querySelector('#output');
|
||||||
|
const outputBEl = document.querySelector('#output2');
|
||||||
|
|
||||||
|
const streckeEl = document.querySelector('input[name="strecke"]');
|
||||||
|
const benzinMengeEl = document.querySelector('input[name="benzinmenge"]');
|
||||||
|
const tankGroesseEL = document.querySelector('input[name="tangroesse"]');
|
||||||
|
|
||||||
|
// 1. Schreiben Sie ein Programm zur Kraftstoffverbrauchsberechnung für Pkws.
|
||||||
|
//const benzinMenge = prompt('Geben Sie die verbrauchte Benzinmenge an!');
|
||||||
|
//const strecke = prompt('Geben Sie die Strecke an!');
|
||||||
|
|
||||||
|
// Funktionen =========
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
// EventHandler =======
|
||||||
|
const onSubmit = (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
};
|
||||||
|
|
||||||
|
formCalculatorEl.addEventListener('submit', onSubmit); // onSumbit = funktionsreferenz
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
37
01_grundlagen/unterricht/tag06/01_if-bsp.html
Normal file
37
01_grundlagen/unterricht/tag06/01_if-bsp.html
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>if - Verzweigung</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>if - Verzweigung</h1>
|
||||||
|
<p>
|
||||||
|
<code>if (BEDINGUNG) { /* ANWEISUNGEN */ }</code>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const SOLUTION = 42;
|
||||||
|
|
||||||
|
// prefer-const
|
||||||
|
const answer = Number(prompt("What's the result of 6 * 7"));
|
||||||
|
|
||||||
|
if (answer === SOLUTION) {
|
||||||
|
console.log('42 is correct.');
|
||||||
|
console.log('Congratulations, You are a genius!');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bei nur einer Anweisung können die {}- Klammern weggelassen werden.
|
||||||
|
if (answer === SOLUTION) console.log('42 is correct.');
|
||||||
|
|
||||||
|
console.log('weiter im code...');
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
35
01_grundlagen/unterricht/tag06/02_if-discount-bsp.html
Normal file
35
01_grundlagen/unterricht/tag06/02_if-discount-bsp.html
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>if - Verzweigung</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>if - Verzweigung</h1>
|
||||||
|
<p>
|
||||||
|
<code>if (BEDINGUNG) { /* ANWEISUNGEN */ }</code>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const DISCOUNT = 0.05;
|
||||||
|
|
||||||
|
const quantityOfCartItem = Number(prompt('Quantity of the item?'));
|
||||||
|
const pricePerItem = 20; // just to simulate the real price here
|
||||||
|
|
||||||
|
let totalPrice = quantityOfCartItem * pricePerItem;
|
||||||
|
|
||||||
|
if (quantityOfCartItem >= 3) {
|
||||||
|
totalPrice = totalPrice * (1 - DISCOUNT);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`total Price: ${totalPrice}`);
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
36
01_grundlagen/unterricht/tag06/03_if-else-bsp.html
Normal file
36
01_grundlagen/unterricht/tag06/03_if-else-bsp.html
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>if - Verzweigung</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>if - Verzweigung</h1>
|
||||||
|
<p>
|
||||||
|
<code> if (BEDINGUNG) { /* ANWEISUNGEN */ } else { /* ANSONSTEN ANWEISUNGEN */ } </code>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const SOLUTION = 42;
|
||||||
|
|
||||||
|
// prefer-const
|
||||||
|
const answer = Number(prompt("What's the result of 6 * 7"));
|
||||||
|
|
||||||
|
if (answer === SOLUTION) {
|
||||||
|
console.log('42 is correct.');
|
||||||
|
console.log('Congratulations, You are a genius!');
|
||||||
|
} else {
|
||||||
|
console.log("Wrong. Math isn't exactly your strong point, is it?");
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('weiter im code...');
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
40
01_grundlagen/unterricht/tag06/04_ternaerer-operator.html
Normal file
40
01_grundlagen/unterricht/tag06/04_ternaerer-operator.html
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Ternärer Operator | Tertiärer Operator</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>Ternärer Operator | Tertiärer Operator</h1>
|
||||||
|
<div class="output alert alert-secondary my-3"></div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const ouputEl = document.querySelector('.output');
|
||||||
|
|
||||||
|
const productCategory = 'books';
|
||||||
|
const netPrice = 10;
|
||||||
|
|
||||||
|
// let taxRate;
|
||||||
|
|
||||||
|
// if (productCategory === 'books') {
|
||||||
|
// taxRate = 1.07;
|
||||||
|
// } else {
|
||||||
|
// taxRate = 1.19;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Ternärer Operator
|
||||||
|
const taxRate = (productCategory === 'books') ? 1.07 : 1.19; // prettier-ignore
|
||||||
|
|
||||||
|
const totalPrice = netPrice * taxRate;
|
||||||
|
|
||||||
|
console.log(totalPrice.toFixed(2)); // => 10.70
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Logischer Operator | oder (||)</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>Logischer Operator | oder (||)</h1>
|
||||||
|
<div class="output alert alert-secondary my-3"></div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const outputEl = document.querySelector('.output');
|
||||||
|
|
||||||
|
const productAgeInDays = Number(prompt('Product age in days?'));
|
||||||
|
const quantityOfCartItem = Number(prompt('Quantity of the item?'));
|
||||||
|
|
||||||
|
// let discountPercentage = 0;
|
||||||
|
|
||||||
|
// if (quantityOfCartItem >= 3 || productAgeInDays <= 30) {
|
||||||
|
// discountPercentage = 5;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// prettier-ignore
|
||||||
|
const discounrPercentage = (quantityOfCartItem >= 3 || productAgeInDays <= 30) ? 5 : 0;
|
||||||
|
|
||||||
|
const text = `Current discount: ${discountPercentage}%`;
|
||||||
|
console.log(text);
|
||||||
|
outputEl.textContent = text;
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Logischer Operator - oder (||) - short breakout</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>Logischer Operator - oder (||) - short breakout</h1>
|
||||||
|
<div class="alert alert-success">
|
||||||
|
Only null, undefined, 0, false, NaN and "" are falsy in JavaScript. Everything else is truthy.
|
||||||
|
</div>
|
||||||
|
<div class="output alert alert-secondary my-3"></div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const zahl = 4 || 2; // JS interpretiert nicht die "rechte" Seite, da die Gleichung bereits mit "4" erfüllt ist. Interpreter bricht nach dem "oder" (||) die Befehlzeile ab. (short circuit breakout)
|
||||||
|
|
||||||
|
console.log(zahl); // => 4
|
||||||
|
|
||||||
|
const zahl2 = false || 2;
|
||||||
|
|
||||||
|
console.log(zahl2); // => 2
|
||||||
|
|
||||||
|
const zahl3 = '' || 4;
|
||||||
|
|
||||||
|
console.log(zahl3); // => 4
|
||||||
|
|
||||||
|
const zahl4 = '10.5' || null;
|
||||||
|
|
||||||
|
console.log(zahl4); // => '10.5'
|
||||||
|
|
||||||
|
const outputEl = document.querySelector('.output') || alert('Element exisitiert nicht');
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Logischer Operator - und (&&)</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>Logischer Operator - und (&&)</h1>
|
||||||
|
<div class="output alert alert-secondary my-3"></div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const outputEl = document.querySelector('.output');
|
||||||
|
|
||||||
|
const numberOfOrders = Number(prompt('How many orders has the customer placed so far?'));
|
||||||
|
const cartTotal = Number(prompt("What is the cart's total?"));
|
||||||
|
|
||||||
|
// let discountPercentage = 0;
|
||||||
|
|
||||||
|
// if (cartTotal >= 100 && numberOfOrders === 0) {
|
||||||
|
// discountPercentage = 7;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// prettier-ignore
|
||||||
|
const discountPercentage = (cartTotal >= 100 && numberOfOrders === 0) ? 7 : 0;
|
||||||
|
|
||||||
|
const text = `Current discount: ${discountPercentage}%`;
|
||||||
|
|
||||||
|
console.log(text);
|
||||||
|
outputEl.textContent = text;
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Logischer Operator - und (&&) - short breakout</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>Logischer Operator - und (&&) - short breakout</h1>
|
||||||
|
<div class="alert alert-success">
|
||||||
|
Only null, undefined, 0, false, NaN and "" are falsy in JavaScript. Everything else is truthy.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const zahl = 4 && 2;
|
||||||
|
|
||||||
|
console.log(zahl); // => 2
|
||||||
|
|
||||||
|
const zahl2 = false && 2; // JS interpretiert nicht die "rechte" Seite, da die Gleichung bereits mit "false" nicht erfüllt ist. Interpreter bricht nach dem "und" (&&) die Befehlzeile ab. (short circuit breakout)
|
||||||
|
|
||||||
|
console.log(zahl2); // => false
|
||||||
|
|
||||||
|
const zahl3 = '' && 4;
|
||||||
|
|
||||||
|
console.log(zahl3); // => ''
|
||||||
|
|
||||||
|
const zahl4 = '10.5' && null;
|
||||||
|
|
||||||
|
console.log(zahl4); // => null
|
||||||
|
|
||||||
|
const outputEl =
|
||||||
|
document.querySelector('.output') && (document.querySelector('.output').style.border = '2px solid red');
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
77
01_grundlagen/unterricht/tag06/09_unaerer-operator.html
Normal file
77
01_grundlagen/unterricht/tag06/09_unaerer-operator.html
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Unärer Operator - not (!)</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>Unärer Operator - not (!)</h1>
|
||||||
|
<p>
|
||||||
|
<a href="https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Operators/Logical_NOT">
|
||||||
|
The logical NOT
|
||||||
|
</a>
|
||||||
|
Der logische NICHT (!) (logische Komplementierung, Negation) Operator wandelt Wahrheit in Falschheit und
|
||||||
|
umgekehrt. Er wird typischerweise mit booleschen (logischen) Werten verwendet. Wenn er mit nicht-booleschen
|
||||||
|
Werten verwendet wird, gibt er <code>false</code> zurück, wenn sein einzelner Operand in
|
||||||
|
<code>true</code> umgewandelt werden kann; andernfalls wird <code>true</code> zurückgegeben.
|
||||||
|
</p>
|
||||||
|
<!-- button.btn.btn-dark.button-click{Schalter status: }>span -->
|
||||||
|
<button class="btn btn-dark button-click mb-3">Schalter status: <span></span></button>
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
name="number"
|
||||||
|
id="input-number"
|
||||||
|
class="form-control input-number"
|
||||||
|
placeholder="Insert a number... " />
|
||||||
|
</div>
|
||||||
|
<div class="output alert alert-secondary my-3"></div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const outputEl = document.querySelector('.output');
|
||||||
|
const btnClickEl = document.querySelector('.button-click');
|
||||||
|
const statusEl = document.querySelector('.button-click span');
|
||||||
|
const inputNumberEl = document.querySelector('.input-number');
|
||||||
|
|
||||||
|
let toggle = false;
|
||||||
|
|
||||||
|
btnClickEl.addEventListener('click', (e) => {
|
||||||
|
// wenn toggle nicht erfüllt (false)
|
||||||
|
// if (!toggle) {
|
||||||
|
// toggle = true;
|
||||||
|
// } else { // ansonsten
|
||||||
|
// toggle = false;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// toggle = !toggle ? true : false;
|
||||||
|
|
||||||
|
toggle = !toggle; // !(false) -> !(true) -> !(false)....
|
||||||
|
|
||||||
|
statusEl.textContent = toggle ? 'on' : 'off';
|
||||||
|
});
|
||||||
|
|
||||||
|
inputNumberEl.addEventListener('input', (e) => {
|
||||||
|
const val = inputNumberEl.value;
|
||||||
|
|
||||||
|
console.log('val: ', val, typeof val);
|
||||||
|
|
||||||
|
// if (!isNaN(val)) {
|
||||||
|
// outputEl.textContent = `${val} is a number`;
|
||||||
|
// } else {
|
||||||
|
// outputEl.textContent = `${val} is a not a number`;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Ternäre Schreibweise
|
||||||
|
outputEl.textContent = !isNaN(val) ? `${val} is a number` : `${val} is a not a number`;
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
57
01_grundlagen/unterricht/tag06/10_str-index-of.html
Normal file
57
01_grundlagen/unterricht/tag06/10_str-index-of.html
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>String.indexOf() | String.lastIndexOf()</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>String.indexOf() | String.lastIndexOf()</h1>
|
||||||
|
<hr />
|
||||||
|
<h2>
|
||||||
|
<a href="https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf"
|
||||||
|
>String.indexOf()</a
|
||||||
|
>
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
Die <strong>indexOf()</strong> Methode gibt den Index der Zeichenkette innerhalb des aufrufenden String
|
||||||
|
Objekts des ersten Vorkommnis des angegebenen Wertes beginnend bei fromIndex zurück. Gibt
|
||||||
|
<strong>-1</strong> zurück, wenn der Wert nicht gefunden wurde.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const name = 'Ladislaus Jones';
|
||||||
|
|
||||||
|
// String - Eigenschaft str.length
|
||||||
|
|
||||||
|
console.log(name.length); // => 15
|
||||||
|
|
||||||
|
// String - Methode str.indexOf('searchValue')
|
||||||
|
|
||||||
|
console.log(name.indexOf(' ')); // => 9
|
||||||
|
|
||||||
|
console.log(name.indexOf('L')); // => 0
|
||||||
|
console.log(name.indexOf('laus')); // => 5
|
||||||
|
|
||||||
|
console.log(name.indexOf('a')); // => 1
|
||||||
|
console.log(name.indexOf('A')); // => -1 <- Zeichenkettenabfolge wurde nicht gefunden
|
||||||
|
|
||||||
|
console.log(name.indexOf('Y')); // => -1 <- Zeichenkettenabfolge wurde nicht gefunden
|
||||||
|
|
||||||
|
// ===========
|
||||||
|
// String - Methode str.indexOf('searchValue'[, position]) - optionaler Parameter (position)
|
||||||
|
|
||||||
|
console.log('name.indexOf("a", 2): ', name.indexOf('a', 2)); // => 6
|
||||||
|
|
||||||
|
// String - Methode str.lasIndexOf('searchValue')
|
||||||
|
console.log(name.lastIndexOf('a')); // => 6
|
||||||
|
console.log(name.lastIndexOf('s')); // => 14
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
58
01_grundlagen/unterricht/tag06/11_str-substring.html
Normal file
58
01_grundlagen/unterricht/tag06/11_str-substring.html
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>String.substring(startIndex, endIndex)</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>
|
||||||
|
<a href="https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/String/substring"
|
||||||
|
>String.substring(startIndex, endIndex)</a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>
|
||||||
|
Die <strong>substring()</strong> Methode gibt einen Teilstring eines Strings zwischen einem Index und einem
|
||||||
|
anderen (EndIndex), oder dem Ende der Zeichenkette zurück...
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const name = 'Ladislaus Jones';
|
||||||
|
|
||||||
|
const spacePosition = name.indexOf(' '); // => 9
|
||||||
|
const firstName = name.substring(0, spacePosition);
|
||||||
|
const lastName = name.substring(spacePosition + 1);
|
||||||
|
|
||||||
|
console.log(firstName); // => 'Laduslaus'
|
||||||
|
console.log(lastName); // => 'Jones'
|
||||||
|
|
||||||
|
// String - Methode str.substring(startIndex, endIndex);
|
||||||
|
|
||||||
|
const str = 'Mozilla';
|
||||||
|
|
||||||
|
console.log(str.substring(1, 2)); // => 'o'
|
||||||
|
console.log(str.substring(3)); // => 'illa'
|
||||||
|
|
||||||
|
console.log(str.substring(2, 5)); // => 'zil'
|
||||||
|
|
||||||
|
console.log('lorem ipsum'.substring(2, 5)); // => 'rem'
|
||||||
|
console.log('lorem ipsum'.substring(2, 5)); // => 'rem'
|
||||||
|
|
||||||
|
console.log('lorem ipsum'.substring(6, 2)); // => 'rem '
|
||||||
|
|
||||||
|
// Bei negativer Zahl wird mit 0 gerechnet
|
||||||
|
console.log('lorem ipsum'.substring(-4)); // => 'lorem ipsum'
|
||||||
|
|
||||||
|
//
|
||||||
|
console.log('lorem ipsum'.substring(999)); // => ''
|
||||||
|
console.log('lorem ipsum'.substring(-999)); // => 'lorem ipsum'
|
||||||
|
console.log('lorem ipsum'.substring(999, -999)); // => 'lorem ipsum'
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
64
01_grundlagen/unterricht/tag06/12_str-substr.html
Normal file
64
01_grundlagen/unterricht/tag06/12_str-substr.html
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>String.substr(startIndex, length) DEPREACATED</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>
|
||||||
|
<a href="https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/String/substr"
|
||||||
|
>String.substr(startIndex, length) DEPREACATED</a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>
|
||||||
|
Die <code>substr()</code>-Methode von String-Werten gibt einen Teil dieses Strings zurück, beginnend am
|
||||||
|
angegebenen Index und wird um eine bestimmte Anzahl von Zeichen verlängert.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const name = 'Ladislaus Jones';
|
||||||
|
|
||||||
|
const spacePosition = name.indexOf(' '); // => 9
|
||||||
|
const firstName = name.substr(0, spacePosition);
|
||||||
|
const lastName = name.substr(spacePosition + 1);
|
||||||
|
|
||||||
|
console.log(firstName); // => 'Laduslaus'
|
||||||
|
console.log(lastName); // => 'Jones'
|
||||||
|
|
||||||
|
// String - Methode str.substr(startIndex, length);
|
||||||
|
|
||||||
|
const str = 'Mozilla';
|
||||||
|
|
||||||
|
console.log(str.substr(1, 2)); // => 'oz'
|
||||||
|
console.log(str.substring(3)); // => 'illa'
|
||||||
|
console.log(str.substr(3)); // => 'illa'
|
||||||
|
|
||||||
|
console.log(str.substr(2, 5)); // => 'zilla'
|
||||||
|
|
||||||
|
console.log('lorem ipsum'.substr(2, 5)); // => 'rem i'
|
||||||
|
console.log('lorem ipsum'.substring(2, 5)); // => 'rem'
|
||||||
|
|
||||||
|
console.log('lorem ipsum'.substring(6, 2)); // => 'rem '
|
||||||
|
console.log('lorem ipsum'.substr(6, 2)); // => 'ip'
|
||||||
|
|
||||||
|
// Bei negativer Zahl wird mit (str.length - WERT) gerechnet
|
||||||
|
console.log('lorem ipsum'.substr(-4)); // => 'psum'
|
||||||
|
|
||||||
|
console.log('https://dummyimage.com/400x300.jpg'.substr(-4)); //=> '.jpg'
|
||||||
|
|
||||||
|
console.log('https://dummyimage.com/400x300.jpg'.substring(-4)); //=> 'https://dummyimage.com/400x300.jpg'
|
||||||
|
|
||||||
|
//
|
||||||
|
console.log('lorem ipsum'.substr(999)); // => ''
|
||||||
|
console.log('lorem ipsum'.substr(-999)); // => 'lorem ipsum'
|
||||||
|
console.log('lorem ipsum'.substr(999, -999)); // => 'lorem ipsum'
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user