Silly Story Generator
In dieser Bewertung werden Sie damit beauftragt, einige der Kenntnisse, die Sie in den Artikeln dieses Moduls erworben haben, anzuwenden, um eine unterhaltsame App zu erstellen, die zufällige alberne Geschichten generiert. Viel Spaß!
Voraussetzungen: | Bevor Sie diese Bewertung versuchen, sollten Sie bereits alle Artikel in diesem Modul durchgearbeitet haben. |
---|---|
Ziel: | Verständnis der JavaScript-Grundlagen, wie Variablen, Zahlen, Operatoren, Strings und Arrays, zu testen. |
Ausgangspunkt
Um mit dieser Bewertung zu beginnen, sollten Sie:
- Holen Sie sich die HTML-Datei für das Beispiel, speichern Sie eine lokale Kopie davon als
index.html
in einem neuen Verzeichnis auf Ihrem Computer und führen Sie die Bewertung zunächst lokal durch. Dies enthält auch das CSS, um das Beispiel zu stylen. - Öffnen Sie die Seite mit dem Rohtext und halten Sie diese in einem separaten Browser-Tab geöffnet. Sie benötigen sie später.
Alternativ könnten Sie einen Online-Editor wie CodePen, JSFiddle oder Glitch verwenden. Sie könnten das HTML, CSS und JavaScript in einen dieser Online-Editoren einfügen. Wenn der von Ihnen verwendete Online-Editor kein separates JavaScript-Panel hat, können Sie es gerne in ein <script>
-Element innerhalb der HTML-Seite einfügen.
Hinweis: Wenn Sie nicht weiterkommen, können Sie sich in einem unserer Kommunikationskanäle an uns wenden.
Projektbeschreibung
Ihnen wurden einige Roh-HTML/CSS und ein paar Textstrings sowie JavaScript-Funktionen zur Verfügung gestellt; Sie müssen das erforderliche JavaScript schreiben, um dies in ein funktionierendes Programm umzuwandeln, das Folgendes tut:
- Generiert eine alberne Geschichte, wenn der "Generate random story"-Button gedrückt wird.
- Ersetzt den Standardnamen "Bob" in der Geschichte durch einen benutzerdefinierten Namen, nur wenn ein benutzerdefinierter Name in das Textfeld "Enter custom name" eingegeben wird, bevor der Generierungsbutton gedrückt wird.
- Konvertiert die standardmäßigen US-Gewichts- und Temperaturmengen und -einheiten in der Geschichte in britische Äquivalente, wenn das UK-Radiobutton vor dem Drücken des Generierungsbuttons aktiviert ist.
- Generiert jedes Mal, wenn der Button gedrückt wird, eine neue zufällige alberne Geschichte.
Der folgende Screenshot zeigt ein Beispiel dafür, was das fertige Programm ausgeben sollte:
Um Ihnen eine bessere Vorstellung zu geben, schauen Sie sich das fertige Beispiel an (kein Blick auf den Quellcode!)
Zu erledigende Schritte
Die folgenden Abschnitte beschreiben, was Sie tun müssen.
Grundlegende Einrichtung:
- Erstellen Sie eine neue Datei namens
main.js
im gleichen Verzeichnis wie Ihreindex.html
-Datei. - Binden Sie die externe JavaScript-Datei in Ihr HTML ein, indem Sie ein
<script>
-Element in Ihr HTML einfügen, das aufmain.js
verweist. Platzieren Sie es direkt vor dem schließenden</body>
-Tag.
Anfängliche Variablen und Funktionen:
-
Kopieren Sie im Rohtext-Dokument den gesamten Code unter der Überschrift "1. COMPLETE VARIABLE AND FUNCTION DEFINITIONS" und fügen Sie ihn oben in die
main.js
-Datei ein. Dies gibt Ihnen drei Variablen, die Verweise auf das Textfeld "Enter custom name" (customName
), den Button "Generate random story" (randomize
) und das<p>
-Element unten im HTML-Body, in das die Geschichte eingefügt wird (story
), speichern. Zudem haben Sie eine Funktion namensrandomValueFromArray()
, die ein Array nimmt und einen der darin gespeicherten Einträge zufällig zurückgibt. -
Schauen Sie sich nun den zweiten Abschnitt des Rohtext-Dokuments an – "2. RAW TEXT STRINGS". Dieser enthält Textstrings, die als Eingabe in unser Programm fungieren. Speichern Sie diese innerhalb von Variablen in
main.js
:- Speichern Sie den ersten, langen Textstring in einer Variablen namens
storyText
. - Speichern Sie den ersten Satz von drei Zeichenfolgen in einem Array namens
insertX
. - Speichern Sie den zweiten Satz von drei Zeichenfolgen in einem Array namens
insertY
. - Speichern Sie den dritten Satz von drei Zeichenfolgen in einem Array namens
insertZ
.
- Speichern Sie den ersten, langen Textstring in einer Variablen namens
Ereignishandler und unvollständige Funktion platzieren:
-
Gehen Sie nun zum Rohtext-Dokument zurück.
-
Kopieren Sie den unter der Überschrift "3. EVENT LISTENER AND PARTIAL FUNCTION DEFINITION" gefundenen Code und fügen Sie ihn am Ende Ihrer
main.js
-Datei ein. Das:- Fügt der
randomize
-Variablen einen Klick-Ereignishandler hinzu, sodass beim Klicken auf den entsprechenden Button dieresult()
-Funktion ausgeführt wird. - Fügt Ihrer Codierung eine teilweise vollendete
result()
-Funktionsdefinition hinzu. Für den Rest der Bewertung werden Sie Zeilen innerhalb dieser Funktion ausfüllen, um sie zu vervollständigen und funktionsfähig zu machen.
- Fügt der
Vervollständigung der result()
-Funktion:
-
Erstellen Sie eine neue Variable namens
newStory
und setzen Sie ihren Wert aufstoryText
. Dies ist notwendig, damit wir bei jedem Drücken des Buttons und jeder Ausführung der Funktion eine neue zufällige Geschichte erstellen können. Wenn wir Änderungen direkt anstoryText
vornehmen würden, könnten wir nur einmal eine neue Geschichte generieren. -
Erstellen Sie drei neue Variablen namens
xItem
,yItem
undzItem
und setzen Sie sie gleich mit dem Ergebnis des Aufrufs vonrandomValueFromArray()
auf Ihre drei Arrays (das Ergebnis ist in jedem Fall ein zufälliges Element aus jedem aufgerufenen Array). Zum Beispiel können Sie die Funktion aufrufen und einen zufälligen String ausinsertX
zurückgeben lassen, indem SierandomValueFromArray(insertX)
schreiben. -
Als nächstes wollen wir die drei Platzhalter im
newStory
-String -:insertx:
,:inserty:
und:insertz:
- durch die StringsxItem
,yItem
undzItem
ersetzen. Es gibt zwei mögliche String-Methoden, die Ihnen dabei helfen können – in jedem Fall machen Sie den Methodenaufruf gleichnewStory
, sodassnewStory
jedes Mal gleich sich selbst mit vorgenommenen Ersetzungen wird. Jedes Mal, wenn der Button gedrückt wird, werden diese Platzhalter durch einen zufälligen albernen String ersetzt. Als weiterer Hinweis, je nach Methode, die Sie wählen, müssen Sie möglicherweise einen der Aufrufe zweimal ausführen. -
Fügen Sie im ersten
if
-Block einen weiteren Aufruf der String-Ersatzmethode hinzu, um den Namen 'Bob' imnewStory
-String mit dername
-Variablen zu ersetzen. In diesem Block sagen wir "Wenn ein Wert in das TextfeldcustomName
eingegeben wurde, ersetzen Sie Bob in der Geschichte mit diesem benutzerdefinierten Namen." -
Im zweiten
if
-Block prüfen wir, ob deruk
-Radio-Button ausgewählt wurde. Falls ja, wollen wir die Gewichts- und Temperaturwerte in der Geschichte von Pfund und Fahrenheit in Steine und Grad Celsius umrechnen. Was Sie tun müssen, ist Folgendes:- Recherchieren Sie die Formeln zum Umrechnen von Pfund in Steine und Fahrenheit in Grad Celsius.
- Ersetzen Sie in der Zeile, die die
weight
-Variable definiert, 300 durch eine Berechnung, die 300 Pfund in Steine umrechnet. Hängen Sie' stone'
an das Endergebnis des gesamtenMath.round()
-Aufrufs an. - Ersetzen Sie in der Zeile, die die
temperature
-Variable definiert, 94 durch eine Berechnung, die 94 Fahrenheit in Grad Celsius umwandelt. Hängen Sie' centigrade'
an das Endergebnis des gesamtenMath.round()
-Aufrufs an. - Fügen Sie direkt unter den beiden Variablendefinitionen zwei weitere String-Ersatzzeilen hinzu, die '94 fahrenheit' durch den Inhalt der
temperature
-Variable und '300 pounds' durch den Inhalt derweight
-Variable ersetzen.
-
Schließlich, in der vorletzten Zeile der Funktion, setzen Sie die
textContent
-Eigenschaft derstory
-Variablen (die den Absatz referenziert) gleichnewStory
.
Hinweise und Tipps
-
Sie müssen das HTML nicht in irgendeiner Weise bearbeiten, außer um das JavaScript in Ihr HTML einzubinden.
-
Wenn Sie nicht sicher sind, ob das JavaScript korrekt in Ihr HTML eingebunden ist, versuchen Sie vorübergehend, alles andere aus der JavaScript-Datei zu entfernen, eine einfache JavaScript-Sequenz hinzuzufügen, von der Sie wissen, dass sie einen offensichtlichen Effekt erzeugt, und dann zu speichern und zu aktualisieren. Folgendes Beispiel macht den Hintergrund des
<html>
-Elements rot – sodass das gesamte Browserfenster rot werden sollte, wenn das JavaScript korrekt angewendet ist:jsdocument.querySelector("html").style.backgroundColor = "red";
-
Math.round()
ist eine eingebaute JavaScript-Methode, die das Ergebnis einer Berechnung auf die nächste ganze Zahl rundet. -
Es gibt drei Instanzen von Strings, die ersetzt werden müssen. Sie können die
replace()
-Methode mehrmals wiederholen oderreplaceAll()
verwenden. Denken Sie daran, Strings sind unveränderlich!