Signatur
Beschreibung
Die schreibgeschützte Eigenschaft type eines HTMLSelectElement gibt einen String zurück, der die Art der Auswahlliste beschreibt. Der Wert hängt ausschließlich vom booleschen Attribut multiple ab:
"select-one": Es kann nur eine Option ausgewählt werden (keinmultiple-Attribut)."select-multiple": Mehrere Optionen können ausgewählt werden (multipleist gesetzt).
Nützlich ist die Eigenschaft vor allem bei generischem Formular-Code, der über form.elements iteriert und je nach Steuerelement unterschiedlich vorgehen muss. So lässt sich ein <select> wie ein <input> über element.type unterscheiden, ohne zusätzlich tagName prüfen zu müssen.
Da der Wert live aus dem multiple-Attribut abgeleitet wird, ändert er sich sofort, wenn select.multiple per Skript umgeschaltet wird. Die Eigenschaft selbst kann nicht beschrieben werden.
Rückgabewert
"select-multiple", wenn das Attribut multiple gesetzt ist, sonst "select-one".Beispiele
Typ einer Auswahlliste abfragen
// HTML: <select id="land"></select>
// <select id="tags" multiple></select>
const land = document.getElementById('land');
const tags = document.getElementById('tags');
console.log(land.type);
console.log(tags.type);
Formularwerte generisch auslesen
const serialisiereFormular = (form) => {
const daten = {};
for (const el of form.elements) {
if (!el.name) continue;
switch (el.type) {
case 'select-multiple':
daten[el.name] = [...el.selectedOptions].map((o) => o.value);
break;
case 'select-one':
daten[el.name] = el.value;
break;
case 'checkbox':
daten[el.name] = el.checked;
break;
default:
daten[el.name] = el.value;
}
}
return daten;
};
console.log(serialisiereFormular(document.querySelector('form')));
Typ ändert sich mit multiple
const select = document.createElement('select');
console.log(select.type);
select.multiple = true;
console.log(select.type);
// Zuweisung an type wird ignoriert (Strict Mode: TypeError)
try {
'use strict';
select.type = 'select-one';
} catch (e) {
console.log(e.name);
}
console.log(select.type);
// Wichtig · Fallstricke
- Nur lesbar: Eine Zuweisung an
typewird im Sloppy Mode stillschweigend ignoriert und löst in Modulen bzw. im Strict Mode einenTypeErroraus. Um den Typ zu ändern,select.multiplesetzen. - Das Attribut
sizehat keinen Einfluss auftype: Ein<select size=\"5\">ohnemultipleist weiterhin"select-one", obwohl es als Liste dargestellt wird. - Bei
"select-multiple"liefertvaluenur den Wert der ersten ausgewählten Option – für alle WerteselectedOptionsverwenden. - Ein HTML-Attribut
typegibt es auf<select>nicht;getAttribute('type')liefert dahernull. - Wird von allen Browsern seit jeher unterstützt.