Start · Sprachen · JavaScript · Referenz · HTMLOutputElement.defaultValue

HTMLOutputElement.defaultValue

Eigenschaft

Liest oder setzt den Standardwert eines <code>&lt;output&gt;</code>-Elements. Auf diesen Wert wird das Element beim Zurücksetzen des Formulars wiederhergestellt.

seit JavaScript Baseline: alle modernen Browser (seit ca. 2017 bre Kategorie: webapi

Signatur

HTMLOutputElement.defaultValue

Beschreibung

Die Eigenschaft defaultValue des Interfaces HTMLOutputElement ist ein String. Sie enthält den Standardwert eines <output>-Elements, also den Text, den das Element nach einem form.reset() oder nach einem Klick auf einen <button type="reset"> wieder anzeigt.

Anders als bei <input> gibt es bei <output> kein value-Attribut im HTML. Den Standardwert bildet zunächst einfach der Textinhalt des Elements. Solange niemand value gesetzt hat, sind defaultValue und textContent identisch. Wenn Sie in diesem Zustand defaultValue setzen, ändert sich deshalb auch der angezeigte Text.

Sobald Sie zum ersten Mal value setzen, speichert der Browser den bisherigen Text intern als Standardwert (in der Spezifikation heißt das default value override). Ab dann laufen die beiden Eigenschaften getrennt: value steuert, was angezeigt wird, und defaultValue legt nur noch fest, worauf beim Zurücksetzen zurückgesprungen wird. Beim Zurücksetzen wird der Text auf den Standardwert gesetzt, und der interne Zustand wird gelöscht.

Typische Anwendungsfälle sind Rechner- und Konfigurationsformulare, bei denen ein Ergebnisfeld nach dem Zurücksetzen einen sinnvollen Ausgangswert zeigen soll, etwa "0 €" oder "–".

Parameter

Name Typ Default Beschreibung
$wert string Nur beim Setzen: der neue Standardwert. Andere Typen werden in einen String umgewandelt (zum Beispiel wird 42 zu "42").

Rückgabewert

Typ
string
Beschreibung
Der aktuelle Standardwert. Wurde value noch nie gesetzt, ist das der Textinhalt des Elements (textContent). Andernfalls ist es der intern gespeicherte Standardwert.

Beispiele

Unterschied zwischen value und defaultValue

// HTML: <form id="calc"><output id="ergebnis">0</output></form>
const out = document.querySelector('#ergebnis');

console.log(out.defaultValue); // Textinhalt
out.value = '42';              // Anzeige ändern
console.log(out.value, out.defaultValue);

document.querySelector('#calc').reset();
console.log(out.value);        // zurück auf den Standardwert
0 42 0 0

Rechner mit Reset-Knopf und eigenem Standardwert

// HTML:
// <form id="rechner">
//   <input type="number" name="a" value="0"> +
//   <input type="number" name="b" value="0"> =
//   <output name="summe" for="a b"></output>
//   <button type="reset">Zurücksetzen</button>
// </form>
const form = document.querySelector('#rechner');
const summe = form.elements.summe;

// Solange value noch nicht gesetzt wurde, ändert das auch die Anzeige
summe.defaultValue = '–';
console.log(summe.textContent);

form.addEventListener('input', () => {
  const a = form.elements.a.valueAsNumber || 0;
  const b = form.elements.b.valueAsNumber || 0;
  summe.value = String(a + b);
});
// Nach einem Klick auf „Zurücksetzen“ steht wieder „–“ im Feld
–

defaultValue ändern, nachdem value gesetzt wurde

// HTML: <form><output id="status">bereit</output></form>
const status = document.querySelector('#status');

status.value = 'lädt …';        // ab hier laufen die Werte getrennt
status.defaultValue = 'leer';   // ändert die Anzeige NICHT
console.log(status.textContent, '|', status.defaultValue);

status.form.reset();
console.log(status.textContent);
lädt … | leer leer

// Wichtig · Fallstricke

  • Das Setzen verhält sich je nach Zustand unterschiedlich: Vor dem ersten Setzen von value überschreibt defaultValue = … den sichtbaren Textinhalt. Danach ändert es nur den Wert, der beim Zurücksetzen verwendet wird. Das führt leicht zu Verwirrung.
  • Es gibt kein HTML-Attribut value oder defaultvalue für <output>. Den Ausgangswert legt man im Markup über den Textinhalt fest.
  • Kindelemente (etwa <span>) gehen verloren: Beim Zurücksetzen, und wenn man defaultValue vor dem ersten Setzen von value ändert, wird der gesamte Inhalt durch reinen Text ersetzt. Der Wert wird nie als HTML ausgewertet, ist also sicher vor XSS.
  • Ein Zurücksetzen wirkt nur, wenn das Element zu einem Formular gehört, entweder als Kind eines <form> oder über das Attribut form.
  • Kompatibilität: Chrome, Edge, Firefox und Safari unterstützen die Eigenschaft seit Langem. Internet Explorer unterstützt <output> nicht.