Start · Sprachen · JavaScript · Referenz · HTMLOutputElement.value

HTMLOutputElement.value

Eigenschaft

Liest oder setzt den aktuellen Wert eines <code>&lt;output&gt;</code>-Elements als String. Er entspricht dem Textinhalt des Elements.

seit JavaScript Baseline: alle Browser (weitgehend verfügbar seit Kategorie: webapi

Signatur

HTMLOutputElement.value

Beschreibung

Die Eigenschaft value des Interfaces HTMLOutputElement gibt den aktuellen Wert eines <output>-Elements zurück. Anders als bei <input> gibt es dafür kein HTML-Attribut value. Der Wert ist einfach der Textinhalt des Elements (textContent). Ein leeres Element liefert den leeren String "".

Wenn du value setzt, werden alle Kindknoten des Elements durch einen einzigen Textknoten ersetzt. Beim ersten Setzen merkt sich der Browser außerdem den ursprünglichen Inhalt als Standardwert-Überschreibung. Diesen Wert liefert danach defaultValue. Beim Zurücksetzen des Formulars (form.reset() oder <button type="reset">) bekommt das Element diesen Standardwert wieder zurück.

In der Praxis zeigt man mit <output> Ergebnisse von Berechnungen oder Benutzeraktionen an, zum Beispiel eine Summe, den aktuellen Wert eines Schiebereglers oder einen Preis. Über das Attribut for lässt sich festlegen, aus welchen Feldern das Ergebnis berechnet wird. Das verbessert auch die Barrierefreiheit, denn viele Screenreader lesen <output> als Live-Region vor.

Parameter

Name Typ Default Beschreibung
$neuerWert string Nur beim Setzen: der neue Wert. Andere Typen (z. B. number) werden automatisch in einen String umgewandelt. Er ersetzt den gesamten Inhalt des Elements als reinen Text, HTML wird also nicht interpretiert.

Rückgabewert

Typ
string
Beschreibung
Der aktuelle Wert, also der Textinhalt des <output>-Elements, oder "", wenn das Element leer ist.

Beispiele

Summe zweier Eingabefelder live anzeigen

// HTML:
// <form id="rechner">
//   <input type="number" id="a" value="2"> +
//   <input type="number" id="b" value="3"> =
//   <output id="ergebnis" for="a b">5</output>
// </form>
const form = document.getElementById('rechner');
const ergebnis = document.getElementById('ergebnis');

form.addEventListener('input', () => {
  const a = form.elements.a.valueAsNumber || 0;
  const b = form.elements.b.valueAsNumber || 0;
  ergebnis.value = a + b; // Zahl wird zu String umgewandelt
  console.log(typeof ergebnis.value, ergebnis.value);
});
string 5 (nach Eingabe z. B. 2 und 3)

Wert eines Schiebereglers anzeigen

// HTML:
// <input type="range" id="lautstaerke" min="0" max="100" value="50">
// <output id="anzeige" for="lautstaerke">50</output>
const regler = document.getElementById('lautstaerke');
const anzeige = document.getElementById('anzeige');

regler.addEventListener('input', () => {
  anzeige.value = `${regler.value} %`;
});

value, defaultValue und Formular-Reset

// HTML: <form id="f"><output id="out">Start</output></form>
const form = document.getElementById('f');
const out = document.getElementById('out');

console.log(out.value, out.defaultValue); // Start Start

out.value = 'Berechnet: 42';
console.log(out.value, out.defaultValue); // Berechnet: 42 Start
console.log(out.value === out.textContent); // true

form.reset();
console.log(out.value); // Start
Start Start Berechnet: 42 Start true Start

HTML wird nicht interpretiert

const out = document.querySelector('output');
out.value = '<strong>fett?</strong>';
console.log(out.children.length); // 0 – nur ein Textknoten
console.log(out.textContent);
0 <strong>fett?</strong>

// Wichtig · Fallstricke

  • Der Wert wird nicht mitgesendet: Obwohl <output> ein Formularelement mit name-Attribut ist, übermittelt der Browser seinen Wert beim Absenden nicht an den Server. Wenn du den Wert brauchst, kopiere ihn in ein <input type="hidden">.
  • Es gibt kein value-Attribut: Ein Aufruf wie setAttribute('value', …) ändert die Anzeige nicht. Den Anfangswert legst du über den Textinhalt im HTML fest.
  • Kindelemente gehen verloren: Beim Setzen werden alle Kindknoten entfernt, zum Beispiel ein <span> für die Einheit. Für formatierte Ausgaben solltest du die Kindelemente gezielt bearbeiten. value ist nur für reinen Text gedacht.
  • Sicher gegen XSS: Der Wert wird als Text eingefügt wie bei textContent. Nutzereingaben kannst du deshalb gefahrlos zuweisen, anders als bei innerHTML.
  • Immer ein String: Auch nach out.value = 42 liefert der Getter "42". Zum Rechnen musst du ihn mit Number() umwandeln.
  • Kompatibilität: Wird von allen modernen Browsern unterstützt, nicht aber vom Internet Explorer.