Start · Sprachen · JavaScript · Referenz · HTMLMeterElement.value

HTMLMeterElement.value

Eigenschaft

Liest oder setzt den aktuellen Wert eines <code>&lt;meter&gt;</code>-Elements als Gleitkommazahl. Der gelesene Wert wird dabei auf den Bereich <code>min</code> bis <code>max</code> begrenzt.

seit JavaScript Baseline: alle modernen Browser (seit ca. 2013) Kategorie: webapi

Signatur

HTMLMeterElement.value

Beschreibung

Die Eigenschaft value spiegelt das HTML-Attribut value eines <meter>-Elements wider. Ein <meter> zeigt einen Messwert innerhalb eines bekannten Bereichs an, zum Beispiel die Belegung eines Speichers, die Stärke eines Passworts oder den Akkustand. value ist der Wert, den der Balken gerade anzeigt.

Beim Lesen liefert die Eigenschaft den tatsächlichen Wert (actual value). Fehlt das Attribut oder lässt es sich nicht als Zahl lesen, wird 0 verwendet. Anschließend wird der Wert begrenzt: Liegt er unter min, kommt min zurück, liegt er über max, kommt max zurück. Ohne eigene Angaben gilt min = 0 und max = 1.

Beim Schreiben wird die Zahl als Attribut value ins DOM übernommen. Der Balken wird sofort neu gezeichnet. Seine Farbe (optimal, suboptimal oder kritisch) ergibt sich aus value im Verhältnis zu low, high und optimum.

Nutzen Sie <meter> mit value für Messwerte. Für den Fortschritt einer laufenden Aufgabe, etwa eines Uploads, ist <progress> das passende Element.

Parameter

Name Typ Default Beschreibung
$neuerWert number Nur beim Setzen: die neue Zahl. Strings werden in Zahlen umgewandelt. Nicht endliche Werte (NaN, Infinity) lösen einen TypeError aus.

Rückgabewert

Typ
number
Beschreibung
Der aktuelle, auf min bis max begrenzte Wert als Gleitkommazahl (double). Fehlt das Attribut oder ist es ungültig, wird 0 verwendet, das dann ebenfalls begrenzt wird.

Beispiele

Wert lesen und Begrenzung beobachten

// HTML: <meter id="disk" min="0" max="100" value="42"></meter>
const meter = document.querySelector('#disk');
console.log(meter.value);

// Werte außerhalb des Bereichs werden beim Lesen begrenzt
meter.value = 150;
console.log(meter.value);
console.log(meter.getAttribute('value'));
42 100 "150"

Speicherbelegung live anzeigen

// HTML: <meter id="storage" min="0" max="1" low="0.6" high="0.85" optimum="0"></meter>
const meter = document.querySelector('#storage');

const updateStorage = async () => {
  if (!navigator.storage?.estimate) return;
  const { usage, quota } = await navigator.storage.estimate();
  meter.value = usage / quota;
  meter.title = `${(meter.value * 100).toFixed(1)} % belegt`;
};

updateStorage();
setInterval(updateStorage, 10_000);

Passwortstärke an ein Eingabefeld koppeln

// HTML: <input id="pw" type="password">
//       <meter id="strength" min="0" max="4" low="2" high="3" optimum="4"></meter>
const input = document.querySelector('#pw');
const meter = document.querySelector('#strength');

const score = (pw) =>
  [/.{8,}/, /[A-Z]/, /\d/, /[^A-Za-z0-9]/]
    .filter((re) => re.test(pw)).length;

input.addEventListener('input', () => {
  meter.value = score(input.value);
  console.log('Stärke:', meter.value);
});
Stärke: 3 // z. B. bei Eingabe "Sommer2024"

Ungültige Werte abfangen

const meter = document.createElement('meter');
console.log(meter.value); // kein Attribut → 0

try {
  meter.value = NaN;
} catch (err) {
  console.log(err.name);
}
0 TypeError

// Wichtig · Fallstricke

  • Begrenzung nur beim Lesen: Das Attribut behält den gesetzten Rohwert, etwa "150". meter.value liefert dagegen den begrenzten Wert. Wer den Rohwert braucht, verwendet getAttribute('value').
  • Standardbereich 0–1: Ohne min und max wird meter.value = 42 als 1 gelesen. Legen Sie den Bereich deshalb vorher fest.
  • Ungültige Werte: NaN und ±Infinity lösen beim Setzen einen TypeError aus. Andere Werte werden in Zahlen umgewandelt: Ein String wie "abc" ergibt NaN und damit ebenfalls einen Fehler, null ergibt 0.
  • Kein Formularwert: <meter> ist kein Formularfeld. Sein Wert wird nicht mit dem Formular gesendet und löst keine input- oder change-Events aus.
  • Barrierefreiheit: Screenreader lesen den Wert unterschiedlich vor. Setzen Sie bei Bedarf einen Text zwischen die Tags oder ein aria-label bzw. title.
  • Kompatibilität: Wird von allen aktuellen Browsern unterstützt. Der Internet Explorer kennt <meter> nicht; dort ist value undefined.