Start · Sprachen · JavaScript · Referenz · Element.ariaErrorMessageElements

Element.ariaErrorMessageElements

Eigenschaft

Liest oder setzt ein Array von Elementen, die die Fehlermeldung für das Element liefern. Das ist das DOM-Gegenstück zum Attribut <code>aria-errormessage</code>.

seit JavaScript Baseline 2025 (Chrome 135+, Edge 135+, Firefox 136 Kategorie: webapi

Signatur

Element.ariaErrorMessageElements

Beschreibung

Die Eigenschaft ariaErrorMessageElements ist das DOM-Gegenstück zum ARIA-Attribut aria-errormessage, das sich direkt auf Elemente bezieht. Das Attribut erwartet eine durch Leerzeichen getrennte Liste von id-Werten. Die Eigenschaft dagegen nimmt ein Array aus echten Element-Objekten entgegen. Es gibt also keine IDs, die man vergeben und pflegen muss, und keine Tippfehler in ID-Referenzen.

Assistive Technologien wie Screenreader lesen den Inhalt der verknüpften Elemente als Fehlermeldung vor. Das geschieht aber nur, wenn das Element gleichzeitig als ungültig markiert ist (aria-invalid="true" bzw. ariaInvalid = "true"). Typischer Einsatz: Formularvalidierung, bei der ein Eingabefeld mit einer sichtbaren Fehlermeldung verbunden wird.

Besonders nützlich ist die Eigenschaft bei Web Components und dynamisch erzeugtem DOM. Die verknüpften Elemente dürfen in einem übergeordneten Scope liegen, etwa im Light DOM, wenn das Element im Shadow DOM sitzt. Über IDs lässt sich so eine Verknüpfung über Shadow-Grenzen hinweg nicht herstellen. Wird der Eigenschaft ein Wert zugewiesen, wird das Inhaltsattribut aria-errormessage auf einen leeren String gesetzt. Setzt man null, wird die Verknüpfung entfernt.

Parameter

Name Typ Default Beschreibung
$value Element[] | null null Beim Setzen: ein Array von Elementen, die die Fehlermeldung enthalten, oder null, um die Verknüpfung zu entfernen.

Rückgabewert

Typ
Element[] | null
Beschreibung
Ein eingefrorenes Array der verknüpften Fehlermeldungs-Elemente. Ist nichts gesetzt, ist der Wert null. Wurde aria-errormessage per Attribut gesetzt, enthält das Array die Elemente, die über die angegebenen IDs gefunden werden.

Beispiele

Eingabefeld mit Fehlermeldung verknüpfen

// HTML: <input id="email" type="email"> <p id="email-fehler" hidden></p>
const input = document.querySelector('#email');
const fehler = document.querySelector('#email-fehler');

input.ariaErrorMessageElements = [fehler];

input.addEventListener('blur', () => {
  const ungueltig = !input.validity.valid;
  input.ariaInvalid = String(ungueltig);
  fehler.hidden = !ungueltig;
  fehler.textContent = ungueltig ? 'Bitte eine gültige E-Mail-Adresse eingeben.' : '';
});

console.log(input.ariaErrorMessageElements[0].id);
email-fehler

Verknüpfung auslesen und wieder entfernen

const feld = document.querySelector('#email');

const elemente = feld.ariaErrorMessageElements ?? [];
console.log(elemente.map((el) => el.textContent));

// Fehler behoben: Verknüpfung entfernen
feld.ariaInvalid = 'false';
feld.ariaErrorMessageElements = null;
console.log(feld.ariaErrorMessageElements);
["Bitte eine gültige E-Mail-Adresse eingeben."] null

Referenz über die Shadow-DOM-Grenze hinweg

// HTML: <span id="globaler-fehler">Pflichtfeld</span> <mein-feld></mein-feld>
class MeinFeld extends HTMLElement {
  connectedCallback() {
    const root = this.attachShadow({ mode: 'open' });
    const input = document.createElement('input');
    root.append(input);

    // Verweis vom Shadow DOM auf ein Element im Light DOM – mit IDs nicht möglich
    input.ariaInvalid = 'true';
    input.ariaErrorMessageElements = [document.getElementById('globaler-fehler')];
  }
}
customElements.define('mein-feld', MeinFeld);

Funktionsprüfung mit Rückfall auf das Attribut

const verknuepfeFehler = (input, fehlerEl) => {
  if ('ariaErrorMessageElements' in Element.prototype) {
    input.ariaErrorMessageElements = [fehlerEl];
  } else {
    fehlerEl.id ||= `fehler-${crypto.randomUUID()}`;
    input.setAttribute('aria-errormessage', fehlerEl.id);
  }
};

verknuepfeFehler(document.querySelector('#email'), document.querySelector('#email-fehler'));

// Wichtig · Fallstricke

  • Nur zusammen mit aria-invalid: Screenreader kündigen die Fehlermeldung nur an, wenn das Element auch als ungültig markiert ist. Solange kein Fehler vorliegt, sollte das Fehlermeldungs-Element versteckt sein.
  • Eingefrorenes Array: Das zurückgegebene Array lässt sich nicht verändern. push() wirft im Strict Mode einen Fehler. Um Elemente zu ändern, weist man immer ein neues Array zu.
  • Scope-Einschränkung: Verknüpfte Elemente müssen im selben Baum oder in einem übergeordneten Scope liegen. Verweise von außen in ein Shadow DOM hinein werden nicht aufgelöst und fehlen dann im Getter-Ergebnis.
  • Attribut und Eigenschaft: Nach dem Setzen der Eigenschaft steht im Attribut aria-errormessage ein leerer String und nicht die IDs. Beim Serialisieren des DOM (z. B. mit outerHTML) geht die Verknüpfung deshalb verloren.
  • Unterstützung durch Screenreader: aria-errormessage wird noch nicht von allen Screenreadern zuverlässig vorgelesen. Viele Entwickler setzen deshalb zusätzlich ariaDescribedByElements oder eine Live-Region (role="alert") ein.
  • Browser-Unterstützung: Die Eigenschaft gehört zu den ARIA-Reflexionen mit Element-Referenzen. Safari unterstützt sie seit 16.4, Chrome/Edge seit 135 und Firefox seit 136. Für ältere Browser ist eine Funktionsprüfung nötig, siehe Beispiel 4.