Formulare in JavaScript (Formulare in JavaScript), Lektion, Seite 723735
https://www.purl.org/stefan_ram/pub/formulare_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

Formulare in JavaScript 

Obwohl wir auch schon mit anderen Elementen Klick-Eingaben verarbeiten konnten, bringt das Aussehen einer Tastfläche für den Bediener viel klarer zum Ausdruck, daß die Tastfläche angeklickt werden kann.

Ein Klickzähler

Das folgende Programm zeigt die Realisierung eines Klick-Zählers mit Hilfe eines Formulares.

Main.html

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head><meta charset="UTF-8" /><title>Main</title><style type="text/css">

</style></head><body>

<h1>Zähler</h1>

<form>
<p><input type="text" id="text" value="0" /></p>
<p><button type="button" id="button">Inkrementieren!</button></p>
</form>

<pre><code><script>/*<![CDATA[*/

text = window.document.getElementById( "text" );
button = window.document.getElementById( "button" );

button.addEventListener( "click", () => text.value = +text.value + 1 );

/*]]>*/</script></code></pre></body></html>

Nach dem Start des Programms kann man – während des Programmablaufs – die einzelnen Einträge und andere Ausdrücke auch in der Konsole auswerten. Dies kann zur Fehlersuche in einem Programm hilfreich sein.

Auswertung
text
<input id="text" value="0" type="text">
Auswertung
text.value
"0"
Auswertung
text.value = +text.value + 1 
1

Es ist auch möglich, die Funktion durch »() => window.alert( text.value = +text.value + 1 )« zu ersetzen, um sich den Wert des Ausdrucks anzeigen zu lassen.

Wir konnten zwar bisher schon dafür sorgen, daß die Flächen von Elementen auf Anklicken reagierten, aber eine Tastfläche (ein button-Element) macht durch sein normales Erscheinungsbild bereits deutlich, daß er aktiviert (beispielsweise angeklickt) werden kann und ist damit benutzerfreundlicher.

Ein Programm zur Verdopplung einer Zahl

Das folgende Programm zeigt die Verwendung eines separaten output-Feldes zur Anzeige eines Ergebnisses.

Main.html

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head><meta charset="UTF-8" /><title>Main</title><style type="text/css">

</style></head><body>

<h1>Verdoppler</h1>

<form>
<p><input type="text" id="text" value="0" /></p>
<p><button type="button" id="button">Verdoppeln!</button></p>
<p><label for="output">Ergebnis: </label><output id="output" for="text" /></p>
</form>

<pre><code><script>/*<![CDATA[*/

text = window.document.getElementById( "text" );
button = window.document.getElementById( "button" );
output = window.document.getElementById( "output" );

button.addEventListener( "click", () => output.value = +text.value * 2 );

/*]]>*/</script></code></pre></body></html>

Ein Programm zur Auswertung eines eingegebenen Ausdrucks

Das folgende Programm zeigt die Verwendung von »eval« zur Auswertung eines eingegebenen Ausdrucks. Man kann in das Formular nun praktisch beliebig komplizierte Ausdrücke, wie beispielsweise »2+3*4«, eingeben und auswerten lassen.

Main.html

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head><meta charset="UTF-8" /><title>Main</title><style type="text/css">

</style></head><body>

<h1>Auswerter</h1>

<form>
<p><input type="text" id="text" value="0" /></p>
<p><button type="button" id="button">Auswerten!</button></p>
<p><label for="output">Ergebnis: </label><output id="output" for="text" /></p>
</form>

<pre><code><script>/*<![CDATA[*/

text = window.document.getElementById( "text" );
button = window.document.getElementById( "button" );
output = window.document.getElementById( "output" );

button.addEventListener( "click", () => output.value = eval( text.value ));

/*]]>*/</script></code></pre></body></html>

Tatsächlich kann man jetzt beliebige JavaScript -Ausdrücke eingeben und auswerten lassen. So kann man nun durch die Eingabe von »window.alert( "Hallo!" )« einen Dialog öffnen. Gibt man ein »text = 0«, so ändert man den Wert des globalen Eintrages »text«, woraufhin das Programm nicht mehr funktioniert!

Eine solche Möglichkeit, Ausdrücke im Rahmen einer Webseite auswerten zu lassen, nennen wir auch ein Auswertungsformular  (engl. “eval box ”) bezeichnet. Mit einem Auswertungsformular kann man eine einfache JavaScript -Konsole auch in Klienten nachbauen, die keine eigene JavaScript -Konsole besitzen.

Eingabeprüfung

Ein Skript könnte auch Formulareingaben prüfen, Beispielsweise eingegebene Werte auf Plausibilität prüfen.

Probleme damit sind:

Ein Beispiel  für eine Eingabeprüfung  mit Zurückweisung einer falschen Eingabe kann an dieser Stelle des Kurses leider noch nicht  vorgestellt werden, weil uns noch einige dafür benötigte Kenntnisse fehlen. Solch ein Beispiel folgt dann in der Lektion zu bedingten Auswertungen im Browser.

Übungsaufgaben

Zur Erleichterung der Bearbeitung können Sie an Stelle von »document.getElementById« auch weiterhin NAOTWO  zum Elementzugriff verwenden, oder erst zum Schluß – nachdem die Aufgabe gelöst ist – NAOTWO  durch den Einsatz von »document.getElementById« ersetzen.

Zur Erleichterung der Bearbeitung können Sie an Stelle von »addEventListener« auch weiterhin on-Attribute verwenden, also beispielsweise an Stelle von »span.addEventListener( "click", () => span.innerHTML = 1 );« in einem Skript-Element »onclick="span.innerHTML=1"« als Attribut des span-Elements.

Durch NAOTWO  (“named access on the window object ”, NAOTWO, sprich “now two ”) werden die im HTML-Quelltext mit »id=« festgelegten Elementkennungen, falls möglich, in JavaScript  als globale Namen zur Verfügung gestellt. (Siehe auch: https://www.w3.org/TR/html5/browsers.html#named-access-on-the-window-object).
Unter HTML-Quelltext  versteht man Text, der in HTML geschrieben wurde – also beispielsweise »id=« enthält. – Etwa im Gegensatz zu der von einem Browser angezeigten Webseite.

Zur Erleichterung der Bearbeitung können Sie bei Übungsaufgaben in den folgenden Lektionen an Stelle von polyglottem HTML  auch weiterhin SIL verwenden. Dabei kann vor den SIL-Code ein style-Element gesetzt werden und hinter den SIL-Code ein script-Element. Die drei leeren Zeilen in dem folgenden SIL-Dokument können jeweils mit CSS -Code, HTML-Code beziehungsweise JavaScript -Code befüllt werden.

Durch NAOTWO  (“named access on the window object ”, NAOTWO, sprich “now two ”) werden die im HTML-Quelltext mit »id=« festgelegten Elementkennungen, falls möglich, in JavaScript  als globale Namen zur Verfügung gestellt. (Siehe auch: https://www.w3.org/TR/html5/browsers.html#named-access-on-the-window-object).
Unter HTML-Quelltext  versteht man Text, der in HTML geschrieben wurde – also beispielsweise »id=« enthält. – Etwa im Gegensatz zu der von einem Browser angezeigten Webseite.

/   Übungsaufgabe

Geben Sie etwas in das Programm zur Auswertung eines eingegebenen Ausdrucks ein, welches das Texteingabefeld aus der Seite entfernt (so daß es nicht mehr sichtbar und nicht mehr verwendbar ist).

/   Umsetzung von Willenserklärungen

Erstellen Sie eine Webseite, die „Ich erkläre mich mit den Nutzungsbedingungen einverstanden: [Ja] [Nein].“ anzeigt. Dies soll durch ein form-Element mit zwei button-Elementen und eventuell weiteren Elementen realisiert werden. Die Details der Gestaltung (beispielsweise eine Aufteilung auf mehrere Zeilen) können von Ihnen festgelegt werden.

Falls die Tastfläche „[Ja]“ angeklickt wurde, soll der Text „Die Lösung lautet: 37.“ angezeigt werden.

(Eine ähnliche Aufgabe wurde früher schon einmal gestellt, aber damals noch ohne Formulare.)

/   Aus der freien Wildbahn  Projekt Zitatgenerator

Eine Funktion, wie im folgenden beschrieben, wurde in der freien Wildbahn im Web auf einer Fehlerseite („404“) entdeckt.

Erstellen Sie ein Formular mit zwei Ausgabetextfeldern und einer Tastfläche mit der Beschriftung „Noch ein Zitat!“. Das Formular soll ein zufällig ausgewähltes Zitat anzeigen und bei Aktivierung der Tastfläche wieder ein (anderes) Zitat zufällig auswählen und anzeigen. In dem oberen Ausgabetextfeld soll das eigentliche Zitat erscheinen, in dem unteren der Autor.

Hinweis Um eine Sammlung von Zitaten anzulegen, können Variablennamen wie »text0«, »text1«, »text2« und so weiter verwendet werden. Der Wert einer zufällig ausgewählten Variablen kann dann mit »eval« ermittelt werden. Falls Sie »eval« nicht verwenden wollen, können Sie dieses Projekt aber auch später im Kurs angehen, nachdem Reihungen vorgestellt wurden.

Hinweis Um juristischen Streitigkeiten aus dem Wege zu gehen, sollten Sie nur sehr alte Zitate verwenden, die nicht mehr urheberrechtlich geschützt sind, oder eigene Zitate erfinden.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723735 stefan_ram:723735 Formulare in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723735, slrprddef723735, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/formulare_javascript