Kodokon kodokon.com

Globale Attribute und data-*

Nutze die Attribute, die überall funktionieren, und speichere deine eigenen Daten im HTML.

7 Min. · 3 Fragen

Diese Lektion in Kodokon öffnen

Manche Attribute funktionieren an jedem Element: Das sind die globalen Attribute. id und class nutzt du bereits; ergänze deinen Werkzeugkasten um hidden (blendet das Element aus), lang (gibt die Sprache eines Abschnitts an), title (Tooltip beim Überfahren) und tabindex (Reihenfolge des Tastaturfokus).

HTML
<p lang="en" title="Original quote">
  Stay hungry, stay foolish.
</p>

<div hidden id="cookie-banner" class="banner">
  We use cookies.
</div>
lang, title und hidden in einer echten Situation.

Willst du einem Element eigene Daten anhängen? Erfinde nie ein ausgedachtes Attribut: HTML reserviert genau dafür die data-*-Attribute. Den Namen nach dem Bindestrich wählst du selbst, in kleingeschriebenem kebab-case. Typische Anwendungsfälle: eine Produktkennung, ein UI-Zustand, eine Komponentenkonfiguration.

HTML
<article
  class="product-card"
  data-product-id="42"
  data-category="books"
  data-in-stock="true"
>
  <h2>HTML for pros</h2>
</article>
Geschäftsdaten, an eine Produktkarte angehängt.

Auf der JavaScript-Seite werden diese Attribute über die dataset-Eigenschaft gelesen. Achte auf die automatische Umwandlung: Das HTML-kebab-case wird in JavaScript zu camelCase. data-product-id liest man also mit dataset.productId. Die Werte sind immer Strings, sogar "true" oder "42".

JAVASCRIPT
const card = document.querySelector(".product-card");

console.log(card.dataset.productId); // "42"
console.log(card.dataset.inStock);   // "true"

card.dataset.state = "selected";
data-* über dataset lesen und schreiben.

Wissenscheck

Stelle sicher, dass du die wichtigsten Punkte dieser Lektion behalten hast.

  1. Wie liest du das data-user-id-Attribut in JavaScript?
    • element.dataset.userId
    • element.dataset.user-id
    • element.data.userId
    • element.getData("user-id")
  2. Wofür sind data-*-Attribute da?
    • Eigene Daten speichern, die dein JavaScript lesen kann
    • Das Laden der Seitendaten beschleunigen
    • Daten an den Server senden, wenn ein Formular abgeschickt wird
  3. Welches globale Attribut blendet ein Element semantisch aus?
    • hidden
    • invisible
    • display