Start · Sprachen · JavaScript · Referenz · HTMLLegendElement

HTMLLegendElement

Schnittstelle

Stellt ein <code>&lt;legend&gt;</code>-Element im DOM dar und bietet Zugriff auf seine Eigenschaften, etwa das zugehörige Formular über <code>form</code>.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

interface HTMLLegendElement extends HTMLElement

Beschreibung

HTMLLegendElement ist die DOM-Schnittstelle für das HTML-Element <legend>. Dieses Element ist die Überschrift eines <fieldset>. Es beschreibt eine Gruppe zusammengehöriger Formularfelder, zum Beispiel „Lieferadresse“ oder „Zahlungsart“. Screenreader lesen den Text der Legende zusammen mit den Feldern der Gruppe vor. Das macht das Element für die Barrierefreiheit wichtig.

Die Schnittstelle erbt alle Eigenschaften und Methoden von HTMLElement, Element, Node und EventTarget. Eigene Eigenschaften hat sie nur wenige:

  • form (nur lesbar, HTMLFormElement | null): das Formular, zu dem das umgebende <fieldset> gehört. Liegt die Legende nicht direkt in einem <fieldset> oder gehört das Fieldset zu keinem Formular, ist der Wert null.
  • align (string, veraltet): spiegelt das HTML-Attribut align wider ("left", "right", "center", "top", "bottom"). Verwenden Sie stattdessen CSS.

Die Schnittstelle hat keinen eigenen Konstruktor und keine Parameter. Instanzen erzeugen Sie mit document.createElement("legend") oder bekommen sie über DOM-Abfragen wie querySelector("legend"). In der Praxis nutzt man HTMLLegendElement vor allem, um Formulargruppen dynamisch aufzubauen, Beschriftungen zu ändern oder aufklappbare Fieldsets umzusetzen.

Rückgabewert

Typ
HTMLLegendElement
Beschreibung
Instanzen bekommen Sie über document.createElement("legend") oder DOM-Abfragen. Die wichtigste eigene Eigenschaft ist form (HTMLFormElement | null).

Beispiele

Legende erzeugen und in ein Fieldset einfügen

const fieldset = document.createElement("fieldset");
const legend = document.createElement("legend");
legend.textContent = "Lieferadresse";

// Die Legende muss das erste Kind des Fieldsets sein
fieldset.prepend(legend);
document.querySelector("form").append(fieldset);

console.log(legend instanceof HTMLLegendElement);
console.log(legend.tagName);
true LEGEND

Zugehöriges Formular über legend.form ermitteln

// HTML:
// <form id="bestellung">
//   <fieldset>
//     <legend id="zahlung">Zahlungsart</legend>
//     <label><input type="radio" name="zahlart" value="rechnung"> Rechnung</label>
//   </fieldset>
// </form>
// <legend id="lose">Ohne Fieldset</legend>

const legend = document.getElementById("zahlung");
console.log(legend.form?.id);

const lose = document.getElementById("lose");
console.log(lose.form);
bestellung null

Aufklappbares Fieldset über die Legende

document.querySelectorAll("fieldset.klappbar > legend").forEach((legend) => {
  // Für Tastatur und Screenreader bedienbar machen
  const button = document.createElement("button");
  button.type = "button"; // sonst wird das Formular abgeschickt
  button.textContent = legend.textContent;
  button.setAttribute("aria-expanded", "true");
  legend.replaceChildren(button);

  button.addEventListener("click", () => {
    const offen = button.getAttribute("aria-expanded") === "true";
    button.setAttribute("aria-expanded", String(!offen));
    // Alle Kinder außer der Legende ein- oder ausblenden
    [...legend.parentElement.children]
      .filter((el) => el !== legend)
      .forEach((el) => { el.hidden = offen; });
  });
});

// Wichtig · Fallstricke

  • Nur die erste Legende zählt: Nur ein <legend>, das das erste Kind eines <fieldset> ist, wird als Überschrift dargestellt und für die Barrierefreiheit ausgewertet. An anderen Stellen verhält es sich wie ein normales Block-Element, und form ist dort null.
  • disabled-Fieldsets: Wenn ein <fieldset disabled> deaktiviert ist, bleiben die Bedienelemente in seiner ersten Legende aktiv. Dieser Sonderfall ist praktisch für Schalter wie „Bereich aktivieren“, kann aber überraschen.
  • form ist nur lesbar: Sie können die Eigenschaft nicht setzen. Sie folgt immer fieldset.form und beachtet damit auch das form-Attribut des Fieldsets.
  • align ist veraltet: Richten Sie Legenden mit CSS aus. Beachten Sie: Wie Browser Legenden darstellen, weicht historisch von normalen Elementen ab. Flexbox oder Grid direkt auf <legend> funktioniert nicht überall gleich.
  • Kompatibilität: Die Schnittstelle wird von allen modernen Browsern unterstützt.