Start · Sprachen · JavaScript · Referenz · HTMLTextAreaElement.type

HTMLTextAreaElement.type

Eigenschaft

Die schreibgeschützte Eigenschaft <code>type</code> eines <code>&lt;textarea&gt;</code>-Elements liefert immer den String <code>"textarea"</code>.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

HTMLTextAreaElement.type

Beschreibung

Die Eigenschaft type der Schnittstelle HTMLTextAreaElement ist schreibgeschützt und gibt immer den festen String "textarea" zurück. Anders als bei <input> gibt es für <textarea> kein HTML-Attribut type. Der Wert lässt sich also nicht beeinflussen.

Nützlich ist die Eigenschaft vor allem, wenn du Formularelemente einheitlich verarbeitest. Beim Durchlaufen von form.elements kannst du über el.type unterscheiden, ob es sich um ein Textfeld ("text"), eine Checkbox ("checkbox"), eine Auswahlliste ("select-one"/"select-multiple"), einen Button ("submit") oder eben um einen mehrzeiligen Textbereich ("textarea") handelt. Eine eigene Prüfung per tagName oder instanceof brauchst du dafür nicht.

Damit passt HTMLTextAreaElement.type zu den gleichnamigen Eigenschaften von HTMLInputElement, HTMLSelectElement, HTMLButtonElement, HTMLOutputElement ("output") und HTMLFieldSetElement ("fieldset").

Rückgabewert

Typ
string
Beschreibung
Immer der String "textarea".

Beispiele

Typ eines Textbereichs auslesen

// HTML: <textarea id="kommentar"></textarea>
const textarea = document.getElementById('kommentar');
console.log(textarea.type);
textarea

Formularelemente nach Typ verarbeiten

// HTML:
// <form id="kontakt">
//   <input name="name" type="text">
//   <textarea name="nachricht"></textarea>
//   <select name="thema"><option>Support</option></select>
//   <button type="submit">Senden</button>
// </form>
const form = document.getElementById('kontakt');

for (const el of form.elements) {
  switch (el.type) {
    case 'textarea':
      // Mehrzeiligen Text normalisieren
      el.value = el.value.trim().replace(/\r\n/g, '\n');
      console.log(`Textbereich: ${el.name}`);
      break;
    case 'text':
      console.log(`Textfeld: ${el.name}`);
      break;
    default:
      console.log(`Sonstiges (${el.type})`);
  }
}
Textfeld: name Textbereich: nachricht Sonstiges (select-one) Sonstiges (submit)

Zeichenzähler nur für Textbereiche

document.addEventListener('input', (event) => {
  const el = event.target;
  if (el.type !== 'textarea') return;

  const max = el.maxLength > 0 ? el.maxLength : '∞';
  console.log(`${el.value.length} / ${max} Zeichen`);
});
z. B. 42 / 500 Zeichen

Schreibversuch hat keine Wirkung

const ta = document.createElement('textarea');
ta.type = 'text'; // wird ignoriert (im Strict Mode: TypeError)
console.log(ta.type);
console.log(ta.hasAttribute('type'));
textarea false

// Wichtig · Fallstricke

  • Schreibgeschützt: Wer type einen Wert zuweist, bewirkt nichts. Im Strict Mode (also auch in ES-Modulen und Klassen) wirft die Zuweisung einen TypeError, weil es nur einen Getter gibt.
  • Kein HTML-Attribut: <textarea type="..."> ist ungültiges HTML und ändert die Eigenschaft nicht. getAttribute('type') liefert dabei nur den Rohwert des Attributs, nicht "textarea".
  • Nicht mit input.type verwechseln: Bei <input> lässt sich type lesen und schreiben. Unbekannte Werte fallen dort auf "text" zurück.
  • Wenn du prüfen willst, ob ein Objekt wirklich ein Textbereich ist, ist el instanceof HTMLTextAreaElement robuster. Grund: Auch beliebige andere Objekte können eine Eigenschaft type haben, etwa Custom Elements oder Event-Objekte.
  • Kompatibilität: Wird von allen modernen Browsern und seit Langem auch von älteren Browsern unterstützt.