Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

HTMLFormElement: elements-Eigenschaft

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.

Die schreibgeschützte Eigenschaft elements der Schnittstelle HTMLFormElement gibt eine HTMLFormControlsCollection zurück, die alle aufgelisteten Formularsteuerelemente enthält, die dem <form>-Element zugeordnet sind.

Auf ein bestimmtes Formularsteuerelement in der zurückgegebenen Sammlung können Sie über einen Index oder über dessen name- oder id-Attribut zugreifen.

Vor HTML 5 war das zurückgegebene Objekt eine HTMLCollection, auf der HTMLFormControlsCollection basiert.

Die Anzahl der zugeordneten Formularsteuerelemente können Sie unabhängig davon über die Eigenschaft length abrufen. Eine Liste aller Formulare in einem bestimmten Dokument erhalten Sie über die Eigenschaft forms des Dokuments.

Wert

Eine HTMLFormControlsCollection, die alle dem Formular zugeordneten Steuerelemente enthält, die keine Bilder sind. Es handelt sich um eine Live-Sammlung: Wenn Formularsteuerelemente dem Formular zugeordnet werden oder ihre Zuordnung aufgehoben wird, aktualisiert sich die Sammlung entsprechend.

Die Formularsteuerelemente in der zurückgegebenen Sammlung stehen in derselben Reihenfolge, in der sie bei einer Tiefensuche mit Preorder-Durchlauf des Baums im Dokument erscheinen. Diese Reihenfolge wird Baumreihenfolge genannt.

Nur die folgenden Formularsteuerelemente werden zurückgegeben:

Beispiele

Kurzes Syntaxbeispiel

Dieses Beispiel zeigt, wie Sie die Liste der Formularsteuerelemente abrufen und über einen Index sowie über einen Namen oder eine ID auf ihre Einträge zugreifen.

html
<form id="my-form">
  <label>
    Username:
    <input type="text" name="username" />
  </label>
  <label>
    Full name:
    <input type="text" name="full-name" />
  </label>
  <label>
    Password:
    <input type="password" name="password" />
  </label>
</form>
js
const inputs = document.getElementById("my-form").elements;
const inputByIndex = inputs[0];
const inputByName = inputs["username"];

Zugeordnete Formularsteuerelemente

Dieses Beispiel zeigt, dass die HTMLFormControlsCollection die dem Formular zugeordneten Steuerelemente enthält und nicht nur diejenigen, die innerhalb von <form> verschachtelt sind.

Das erste Formular enthält vier Formularsteuerelemente: ein <fieldset>-Element und drei <input>-Elemente. Die <legend>- und <label>-Elemente gehören nicht zu den aufgelisteten Formularsteuerelementen. Das zweite Formular enthält nur ein darin verschachteltes Formularsteuerelement: ein einzelnes <object>-Element. Alle Formularsteuerelemente des ersten Formulars sind über ihr form-Attribut dem zweiten Formular zugeordnet.

html
<form id="fullForm">
  This form looks full, but it has no associated form controls
  <fieldset form="sparseForm">
    <legend>This is a legend</legend>
    <label>A form control: <input form="sparseForm" /></label>
    <label>Another form control: <input form="sparseForm" /></label>
    <label>Yet another form control: <input form="sparseForm" /></label>
  </fieldset>
</form>

<form id="sparseForm">
  <object data="lone-form-control.jpg">Lone form control</object>
</form>

Mit der Eigenschaft elements rufen wir die HTMLFormControlsCollection für jedes Formular ab.

js
const sparse = document.getElementById("sparseForm").elements;
const full = document.getElementById("fullForm").elements;

Die Sammlung enthält die dem Formularelement zugeordneten Formularsteuerelemente, also alle <button>-, <fieldset>-, <input>-, <object>-, <output>-, <select>- und <textarea>-Elemente sowie formularassoziierte benutzerdefinierte Elemente, die dem Formular zugeordnet sind. Das gilt auch dann, wenn diese Elemente in einem anderen Formular oder in keinem Formular verschachtelt sind.

js
console.log(`sparse form: ${sparse.length}`); // sparse form: 5
console.log(`full form: ${full.length}`); // full form: 0

Die Formularsteuerelemente der Sammlung stehen in derselben Reihenfolge, in der sie im Dokument erscheinen.

js
console.log(`first member: ${sparse[0].tagName}`); // first member: FIELDSET
console.log(`last member: ${sparse[sparse.length - 1].tagName}`); // last member: OBJECT

Auf Formularsteuerelemente zugreifen

Dieses Beispiel ruft die Elementliste des Formulars ab und durchläuft sie auf der Suche nach <input>-Elementen des Typs "text", um diese weiterzuverarbeiten.

js
const inputs = document.getElementById("my-form").elements;

// Iterate over the form controls
for (const input of inputs) {
  if (input.nodeName === "INPUT" && input.type === "text") {
    // Update text input
    input.value = input.value.toLocaleUpperCase();
  }
}

Formularsteuerelemente deaktivieren

js
const inputs = document.getElementById("my-form").elements;

// Iterate over the form controls
for (const input of inputs) {
  // Disable all form controls
  input.setAttribute("disabled", "");
}

Spezifikationen

Spezifikation
HTML
# dom-form-elements-dev

Browser-Kompatibilität