Eigenschaften von Elementen

In JavaScript unterscheidet man bei HTML-Elementen meist zwischen Eigenschaften (Properties), Attributen und Styles. Da ein HTML-Element im Browser ein komplexes Objekt ist, gibt es hunderte Möglichkeiten, aber hier sind die, die du im Alltag zu 99 % brauchst:

1. Inhalte auslesen & ändern

Das sind die absoluten Basics, um an den Text oder das HTML innerhalb eines Elements zu kommen.

Eigenschaft Beschreibung
innerText Der sichtbare Text (berücksichtigt CSS, z. B. display: none).
textContent Der reine Textinhalt (schneller, liest auch versteckten Text).
innerHTML Das komplette HTML inklusive aller Tags innerhalb des Elements.
value Speziell für Formular-Elemente (input, select, textarea).

2. Identifikation & Klassen

Hier geht es darum, wer das Element ist und wie es aussieht.

Eigenschaft Beschreibung
id Die eindeutige ID des Elements.
className Der komplette String des class-Attributs.
classList Ein Objekt, um Klassen elegant zu bearbeiten (.add(), .remove(), .toggle(), .contains()).
tagName Der Name des Tags (immer in Großbuchstaben, z. B. "DIV" oder "LI").

Zwei gängige Wege, um auf die CSS-Klassen eines Elements zuzugreifen.

Hier sind die zwei wichtigsten Werkzeuge:

1. classList (Der moderne Weg) 🛠️

Das ist eine Liste aller Klassen des Elements. Sie bietet praktische Methoden wie:

2. className (Der klassische Weg) 📜

Dies gibt dir alle Klassen als einen einzigen String (Text) zurück, so wie sie im HTML-Attribut stehen.

3. Attribute & Eigene Daten (Dataset)

Attribute sind das, was im HTML-Tag steht.

Methode / Eigenschaft Beschreibung
getAttribute("name") Liest ein beliebiges Attribut aus (z. B. src, href, title).
setAttribute("n", "v") Setzt ein Attribut auf einen neuen Wert.
dataset Zugriff auf alle data-* Attribute. Aus data-user-id wird dataset.userId.
hasAttribute("name") Prüft, ob ein Attribut überhaupt existiert (gibt true/false).

4. Geometrie & Position (Abmessungen)

Oft muss man wissen, wie groß ein Element ist oder wo es auf dem Bildschirm steht.

Eigenschaft Beschreibung
offsetWidth / offsetHeight Die volle Breite/Höhe inklusive Border und Padding.
clientWidth / clientHeight Die Breite/Höhe nur mit Padding (ohne Border).
getBoundingClientRect() Extrem wichtig: Liefert top, left, right, bottom, x, y relativ zum sichtbaren Bereich (Viewport).

5. Styles (CSS)

Hier gibt es zwei Wege:

Formular-Elemente (<input>, <select>, <textarea>) sind eine eigene kleine Welt in JavaScript. Sie haben spezielle Eigenschaften, die bei normalen <div> oder <span> Elementen gar nicht existieren.

Hier ist die Ergänzung deiner Liste, speziell für Formulare:

Die "Zwillings-Natur" von Elementen

Man kann sich HTML-Elemente wie Eisberge vorstellen: Ein Teil ist die Struktur (Attribute/HTML), der andere Teil ist die Präsentation (CSS).

Hier ist ein kurzer Vergleich, um den Unterschied zwischen Attributen und Styles beim Auslesen zu verdeutlichen:

Aufgabe Der "Attribut"-Weg Der "Style"-Weg
Bildquelle img.src (oder getAttribute('src'))
Hintergrundfarbe getComputedStyle(el).backgroundColor
Link-Ziel a.href
Tatsächliche Höhe el.offsetHeight (Zahl) getComputedStyle(el).height (String mit "px")

6. Formular-Eigenschaften (Inputs & Co.)

Eigenschaft Gilt für... Beschreibung
value input, textarea, select Der aktuelle Inhalt des Feldes. Bei einem Textfeld ist es der Text, bei einem Select die value der gewählten Option.
name Alle Inputs Der Wert des name-Attributs. Wichtig, wenn du Daten an einen Server sendest.
checked checkbox, radio Ein Boolean (true oder false). Zeigt an, ob der Haken gesetzt ist.
disabled Alle Inputs Ein Boolean. Wenn true, ist das Feld ausgegraut und nicht bedienbar.
required Alle Inputs Ein Boolean. Zeigt an, ob das Feld laut HTML-Validierung ausgefüllt werden muss.
placeholder Text-Inputs Der graue Hinweistext, der verschwindet, wenn man tippt.
type Alle Inputs Der Typ (z.B. "password", "email", "number"). Du kannst ihn sogar zur Laufzeit ändern (z.B. Passwort sichtbar machen).
multiple select, file Zeigt an, ob mehrere Optionen oder Dateien gleichzeitig gewählt werden können.

Ein wichtiger Unterschied: value vs. getAttribute("value")

Das ist eine klassische Stolperfalle! ⚠️

Regel: Wenn du wissen willst, was der Nutzer gerade gemacht hat, nutze immer die Property (z.B. .value oder .checked), nicht das Attribut.

Praxis-Beispiel: Die "Checkbox-Logik"

Stell dir vor, du hast in deiner Shopping-Liste eine Checkbox für "Wichtig":

HTML
<input type="checkbox" class="urgent-task" name="urgent">  

Um in JavaScript zu prüfen, ob der Nutzer den Haken gesetzt hat, ist der Weg über checked viel einfacher als alles andere:

JavaScript
const checkbox = document.querySelector(".urgent-task");
if (checkbox.checked) {
    console.log("Dieser Artikel ist extrem wichtig!");
}

Ein kleiner Tipp für die Zukunft:

Wenn du ein ganzes Formular mit vielen Feldern hast, musst du nicht jedes value einzeln abfragen. Es gibt ein geniales Objekt namens FormData. Damit kannst du alle name und value Paare eines Formulars auf einen Schlag auslesen.