Start · Sprachen · JavaScript · Referenz · Element.ariaValueNow

Element.ariaValueNow

Eigenschaft

Spiegelt das Attribut <code>aria-valuenow</code> wider, das den aktuellen Wert eines Bereichs-Widgets wie Slider, Fortschrittsbalken oder Spinbutton angibt.

seit JavaScript Baseline 2023: Chrome 81+, Edge 81+, Safari 12.1+, Kategorie: webapi

Signatur

Element.ariaValueNow

Beschreibung

Die Eigenschaft ariaValueNow gehört zum ARIA-Reflection-Mechanismus des Element-Interfaces. Sie liest und schreibt direkt das HTML-Attribut aria-valuenow. Damit teilen Sie assistiven Technologien wie Screenreadern mit, welchen Wert ein Bereichs-Widget gerade hat, zum Beispiel ein Element mit role="slider", role="progressbar", role="spinbutton", role="scrollbar" oder role="meter".

Sie brauchen die Eigenschaft vor allem bei selbstgebauten Widgets, bei denen kein natives Element wie <input type="range">, <progress> oder <meter> infrage kommt. Ändert sich der Wert durch Tastatur, Maus oder einen Hintergrundprozess, sollten Sie ariaValueNow jedes Mal mitaktualisieren. Nur dann meldet der Screenreader den neuen Stand.

Wichtig: Der Wert ist immer ein String und kein number, obwohl er eine Dezimalzahl darstellen soll. Er sollte zwischen aria-valuemin und aria-valuemax liegen. Ist der Wert für Menschen schwer verständlich, zum Beispiel eine Zahl, die für einen Wochentag steht, ergänzen Sie ihn mit aria-valuetext (ariaValueText). Bei einem unbestimmten Fortschrittsbalken lassen Sie aria-valuenow ganz weg.

Parameter

Name Typ Default Beschreibung
$value string | null null Wird beim Schreiben zugewiesen. Ein String, der eine Dezimalzahl darstellt, z. B. "42" oder "3.5". Mit null wird das Attribut aria-valuenow entfernt.

Rückgabewert

Typ
string | null
Beschreibung
Der aktuelle Inhalt des Attributs aria-valuenow als String. Fehlt das Attribut, ist der Wert null.

Beispiele

Wert lesen und setzen

// HTML: <div id="volume" role="slider" aria-valuemin="0" aria-valuemax="100" aria-valuenow="30" tabindex="0"></div>
const slider = document.getElementById('volume');

console.log(slider.ariaValueNow);          // "30"
console.log(typeof slider.ariaValueNow);   // "string"

slider.ariaValueNow = '55';
console.log(slider.getAttribute('aria-valuenow'));
30 string 55

Eigener Slider mit Tastatursteuerung

const slider = document.querySelector('[role="slider"]');
const min = Number(slider.ariaValueMin ?? 0);
const max = Number(slider.ariaValueMax ?? 100);

const setValue = (v) => {
  const clamped = Math.min(max, Math.max(min, v));
  slider.ariaValueNow = String(clamped);
  slider.ariaValueText = `${clamped} Prozent`;
  slider.style.setProperty('--pos', `${clamped}%`);
};

slider.addEventListener('keydown', (e) => {
  const current = Number(slider.ariaValueNow ?? min);
  if (e.key === 'ArrowRight' || e.key === 'ArrowUp') setValue(current + 1);
  if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') setValue(current - 1);
  if (e.key === 'Home') setValue(min);
  if (e.key === 'End') setValue(max);
});

Fortschrittsbalken beim Upload aktualisieren

const bar = document.querySelector('#upload-progress'); // role="progressbar"

const upload = (file) => new Promise((resolve, reject) => {
  const xhr = new XMLHttpRequest();
  xhr.upload.addEventListener('progress', (e) => {
    if (e.lengthComputable) {
      bar.ariaValueNow = String(Math.round((e.loaded / e.total) * 100));
    } else {
      bar.ariaValueNow = null; // unbestimmter Zustand: Attribut entfernen
    }
  });
  xhr.addEventListener('load', () => resolve(xhr.status));
  xhr.addEventListener('error', reject);
  xhr.open('POST', '/upload');
  xhr.send(file);
});

// Wichtig · Fallstricke

  • String statt Zahl: Für Berechnungen müssen Sie den Wert mit Number() umwandeln. Wenn Sie beim Schreiben eine Zahl zuweisen, wird sie automatisch in einen String umgewandelt.
  • Keine Prüfung: Der Browser kontrolliert nicht, ob der Wert zwischen aria-valuemin und aria-valuemax liegt. Die Begrenzung müssen Sie selbst umsetzen.
  • Native Elemente bevorzugen: <input type="range">, <progress> und <meter> geben ihren Wert automatisch an assistive Technologien weiter. Wenn Sie dort zusätzlich aria-valuenow setzen, kann das dem nativen Wert widersprechen.
  • Kompatibilität: Firefox unterstützt ARIA-Reflection erst ab Version 119. Für ältere Browser verwenden Sie setAttribute('aria-valuenow', …), denn das funktioniert überall.
  • Ist der Zahlenwert für Menschen nicht aussagekräftig, setzen Sie zusätzlich ariaValueText, zum Beispiel „Schritt 2 von 5“.