Signatur
Beschreibung
Die Eigenschaft name des Interfaces HTMLOutputElement gibt den Wert des HTML-Attributs name eines <output>-Elements als Zeichenkette zurück. Wird ihr ein Wert zugewiesen, ändert sich auch das Attribut. Fehlt das Attribut, ist der Wert ein leerer String.
Über den Namen erreicht man das Element in der Sammlung form.elements (z. B. form.elements.summe oder form.elements["summe"]). Innerhalb von oninput-Handlern des Formulars kann man es auch direkt über seinen Namen ansprechen. Das macht name praktisch für Rechenformulare, die ein Ergebnis live anzeigen.
Wichtig: Anders als <input>-Elemente werden <output>-Elemente beim Absenden nicht mitgesendet. Der Name wird also nicht Teil der Formulardaten, und auch new FormData(form) enthält keinen Eintrag dafür. Der Name dient nur der Adressierung im Skript.
Rückgabewert
name. Fehlt das Attribut, ist es ein leerer String "". Beim Zuweisen wird der Wert in einen String umgewandelt und ins Attribut geschrieben.Beispiele
Namen auslesen und über form.elements zugreifen
// HTML:
// <form id="rechner">
// <input type="number" name="a" value="2"> +
// <input type="number" name="b" value="3"> =
// <output name="summe" for="a b">5</output>
// </form>
const form = document.getElementById('rechner');
const out = form.querySelector('output');
console.log(out.name); // Name lesen
console.log(form.elements.summe === out); // Zugriff über den Namen
Live-Rechner, der das Ergebnis über den Namen schreibt
const form = document.getElementById('rechner');
form.addEventListener('input', () => {
const { a, b, summe } = form.elements;
summe.value = a.valueAsNumber + b.valueAsNumber;
console.log(`${summe.name} = ${summe.value}`);
});
Namen dynamisch setzen und prüfen, ob er mitgesendet wird
const out = document.createElement('output');
console.log(JSON.stringify(out.name)); // noch kein Attribut
out.name = 'ergebnis';
console.log(out.getAttribute('name'));
const form = document.createElement('form');
form.append(out);
out.value = '42';
console.log(new FormData(form).has('ergebnis')); // output wird nicht gesendet
// Wichtig · Fallstricke
- Kein Absenden:
<output>-Werte gehören nicht zu den Formulardaten. Soll das Ergebnis an den Server gehen, muss man es zusätzlich in ein<input type="hidden">kopieren. - Namenskollisionen: Heißen mehrere Steuerelemente gleich, liefert
form.elements.nameeineRadioNodeListstatt eines einzelnen Elements. Namen wiesubmit,actionoderlengthüberdecken außerdem gleichnamige Formular-Eigenschaften und sollten vermieden werden. nameist nicht dasselbe wieid. Fürdocument.getElementById()und für das Attributforanderer Elemente braucht man eineid.- Kompatibilität: wird von allen aktuellen Browsern unterstützt. Der alte Internet Explorer kennt
<output>nicht.