HTML Academy · Lektion

Benutzerdefinierte Datenattribute: data-*

Speichern Sie benutzerdefinierte Daten mit data-*-Attributen direkt an Elementen.

Lektion 4 von 413 Schritte

Benutzerdefinierte Datenattribute: data-* ist eine kostenlose HTML Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des HTML Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der HTML Academy-Kurs umfasst insgesamt 4 Lektionen.

Was sind data-*-Attribute?

Mit benutzerdefinierten Datenattributen können Sie zusätzliche Informationen direkt in HTML-Elementen speichern:

<button data-user-id="42" data-action="delete">Delete User</button>
<li data-category="frontend" data-level="beginner">HTML</li>

<!-- Format: data-[name]="value" -->
<!-- Any alphanumeric name after data- is valid -->
<!-- Values are always strings -->

Warum es data-* gibt

Vor data-* speicherten Entwickler zusätzliche Daten in:

  • Versteckten Eingabefeldern (unübersichtlich)
  • CSS-Klassennamen (fragil)
  • Nicht standardisierten Attributen wie rel oder title (ungültiges HTML)

HTML5 standardisierte data-* als offizielle Möglichkeit, benutzerdefinierte Daten einzubetten, ohne Semantik oder Darstellung zu beeinflussen.

Benennungsregeln

Benennungsregeln für data-*-Attribute:

  • Müssen mit data- beginnen
  • Der Name darf Kleinbuchstaben, Ziffern, Bindestriche, Unterstriche und Punkte enthalten
  • Keine Großbuchstaben im Namen (die HTML-Spezifikation wandelt sie in Kleinbuchstaben um)
  • Der Name darf nicht mit xml beginnen
<div data-user-id="1">OK</div>
<div data-product-category="tools">OK</div>
<!-- <div data-XML-thing="1">BAD: starts with xml -->
<!-- <div data-MyProp="1">BAD: uppercase in name -->

data-* in JavaScript lesen

Greifen Sie über die Eigenschaft dataset auf benutzerdefinierte Daten zu:

<button id="btn"
  data-user-id="42"
  data-action="delete"
  data-confirm-message="Are you sure?"
>
  Delete
</button>

<script>
const btn = document.getElementById('btn');
console.log(btn.dataset.userId);          // '42'
console.log(btn.dataset.action);          // 'delete'
console.log(btn.dataset.confirmMessage);  // 'Are you sure?'
// Note: data-user-id → dataset.userId (camelCase conversion)
</script>

data-* mit dataset schreiben

Setzen und entfernen Sie Datenattribute über dataset:

const card = document.querySelector('.card');

// Set:
card.dataset.status = 'active';
// Now: <div class="card" data-status="active">

// Delete:
delete card.dataset.status;
// Now: data-status is removed

// Alternatively with setAttribute:
card.setAttribute('data-status', 'inactive');
card.removeAttribute('data-status');

Umwandlung von Bindestrich in camelCase

Die dataset-API wandelt durch Bindestriche getrennte Namen in camelCase um:

<!-- HTML attribute         JavaScript dataset property -->
data-user-id           →   dataset.userId
data-product-category  →   dataset.productCategory
data-max-retries       →   dataset.maxRetries
data-is-active         →   dataset.isActive

CSS-Attributselektoren

Verwenden Sie Datenattribute in CSS-Selektoren:

[data-status="active"] {
  color: green;
}

[data-status="inactive"] {
  color: gray;
  text-decoration: line-through;
}

/* Present but any value: */
[data-featured] {
  border: 2px solid gold;
}

Tooltip-Muster

Erstellen Sie Tooltips mit reiner CSS und Datenattributen:

<span data-tooltip="This is a tooltip">Hover me</span>

/* CSS: */
/*
[data-tooltip] {
  position: relative;
}
[data-tooltip]::after {
  content: attr(data-tooltip);  /* attr() reads the attribute value */
  position: absolute;
  background: #333;
  color: white;
  padding: 0.25rem 0.5rem;
  border-radius: 4px;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s;
}
[data-tooltip]:hover::after { opacity: 1; }
*/

Muster zur Zustandsverfolgung

Verfolgen Sie den Zustand einer Komponente mit Datenattributen:

<button data-state="off" id="toggle">Toggle</button>

<script>
document.getElementById('toggle').addEventListener('click', function() {
  const state = this.dataset.state;
  this.dataset.state = state === 'off' ? 'on' : 'off';
  this.textContent = this.dataset.state === 'on' ? 'Active' : 'Toggle';
});
</script>

/* CSS: */
/* [data-state="on"] { background: green; color: white; } */

data-* vs JavaScript-Variablen

Wann Sie data-* verwenden sollten und wann Sie Daten in JavaScript speichern sollten:

  • Verwenden Sie data-* für Werte, die direkt zu einem DOM-Element gehören und möglicherweise von CSS gelesen werden
  • Verwenden Sie JavaScript-Variablen oder -Objekte für komplexe Datenstrukturen, die nicht an bestimmte Elemente gebunden sind
  • Speichern Sie keine großen oder sensiblen Daten in data-* — sie sind in den DevTools sichtbar

data-* ist nicht für die Darstellung gedacht

Häufige Fehler, die Sie vermeiden sollten:

<!-- BAD: storing presentation data in data-* -->
<div data-color="red" data-font-size="18">Text</div>
<!-- Use CSS classes instead: -->
<div class="text-danger text-lg">Text</div>

<!-- BAD: storing sensitive data -->
<div data-api-key="sk-123...">Content</div>
<!-- NEVER store secrets in HTML attributes -->

Schnelltest

Wie greift die dataset-API auf ein data-product-id-Attribut zu?

Zusammenfassung: data-*-Attribute

Die wichtigsten Punkte zu benutzerdefinierten Datenattributen:

  • data-name="value" — benutzerdefinierte Metadaten in Elementen speichern
  • Zugriff über element.dataset.camelCase
  • Bindestriche werden in der dataset-API in camelCase umgewandelt
  • In CSS mit Selektoren wie [data-name="value"] verwenden
  • Niemals sensible Daten (Schlüssel, Passwörter) in Datenattributen speichern
Kostenlos starten

Lerne HTML mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
40
Lektionen
159

Häufig gestellte Fragen

Ist die Lektion „Benutzerdefinierte Datenattribute: data-*“ kostenlos?

Ja — der vollständige Text von „Benutzerdefinierte Datenattribute: data-*“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des HTML Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der HTML Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Benutzerdefinierte Datenattribute: data-*“?

Speichern Sie benutzerdefinierte Daten mit data-*-Attributen direkt an Elementen. Du übst HTML Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um HTML Academy zu starten?

Keine Vorkenntnisse erforderlich. HTML Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Benutzerdefinierte Datenattribute: data-*“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser HTML Academy-Lektion Code schreiben und ausführen?

Ja. Jede HTML Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. id, class, style und title
  2. Das hidden-Attribut
  3. tabindex und accesskey
  4. Benutzerdefinierte Datenattribute: data-*
← Zurück zu HTML Academy