Wie Ergebnis einer Javascript-Methode in einem HTML-Textfeld ausgeben?
bearbeitet von
@@Rolf B
> ~~~JavaScript, bad
> var ergebnis = a + b;
> rechner.ergebnis.value = ergebnis;
> ~~~
Das wird wohl nichts. Das Feld hat zwar `id="ergebnis"`, aber `name="Ergebnis"`; müsste also mit großem `E` angesprochen werden.
Besser wäre allerdings, im HTML `name="ergebnis"` zu schreiben und damit einerseits `id` und `name` gleich zu haben und anderseits konsistent Kleinschreibung zu verwenden (es ist ja auch `<form name="rechner">`{:.language-html}).
Ich halte es aber für keine so gute Idee, für Feldnamen und JavaScript-Berechnungsvariable denselben Bezeichner zu verwenden.
> Was Du willst, ist entweder das `output`-Element,
An die Stelle gehört ein Punkt, kein Komma. Ohne „entweder“ …
> oder ein `<input type="text" readonly ...>`
… und „oder“. Für die *Aus*gabe ist *in*put falsch.
Statt `<input type=readonly id="ergebnis" name=Ergebnis size=30 >`{:.language-html.bad} sollte da stehen: `<output id="ergebnis" name="ergebnis"></output>`{:.language-html} (habe hier ein kleines `e` verwendet).
Die ID macht sich gut, um das `label` zuzuordnen, über das auch ein Ausgabefeld verfügen sollte:
~~~HTML, good
<label for="ergebnis">Ergebnis</label>
<output id="ergebnis" name="ergebnis"></output>
~~~
Wenn keine visuelle Beschriftung möchte, kann man sie [visuell verstecken](https://a11yproject.com/posts/how-to-hide-content/).
Das Ausgabefeld kann ebenfalls über `document.forms.rechner.ergebnis`{:.language-js} angesprochen und über `document.forms.rechner.ergebnis.value`{:.language-js} gefüllt werden. [Guckst du.](https://codepen.io/gunnarbittersmann/pen/aQKBNN)
LLAP 🖖
--
*„Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“* —Kurt Weidemann