Benutzerdefinierte Datenattribute: data-*
Speichern Sie benutzerdefinierte Daten mit data-*-Attributen direkt an Elementen.
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
relodertitle(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
xmlbeginnen
<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.isActiveCSS-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
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
- id, class, style und title
- Das hidden-Attribut
- tabindex und accesskey
- Benutzerdefinierte Datenattribute: data-*