HTML5 Logo Ein neues Feature von HTML5 sind frei wählbare data-Attribute für HTML-Elemente, die sogenannten „Custom Data Attributes”.

Die Idee ist dahinter ganz einfach: Man möchte eigene Daten an einem HTML-Element abspeichern, für die es kein vorgefertigtes Attribut gibt und die auch nicht direkt im Frontend zu sehen sein sollen. Insgesamt ein sehr nützliches Features, das im Folgenden vorgestellt wird.

data-* Attribute

Man kann in einem HTML-Element ein eigenes Attribut definieren, indem man mit dem vorgegebenen Präfix data- beginnt und anschließend mit einer frei wählbaren Bezeichnung endet (z.B. data-release-year). Im Folgenden ein Beispiel, das einige Beatles-Alben mit dem Erscheinungsjahr versieht. Dabei handelt es sich um validen HTML5-Code (und dies ganz ohne eigenen Namespaces oder Doctype).

HTML:

  1.   "1969"Yellow Submarine
  2.   "1969"Abbey Road
  3.   "1970"Let It Be         

Man kann beliebig viele dieser data-*-Attribute „erfinden” und verwenden.

Nur zur eigenen Verwendung

Die Custom-Data-Attributes sind nur dazu gedacht, von den Skripten der eigenen Website genutzt zu werden. Sie sollen jedoch nicht dazu dienen, dass externe Skripte, Suchmaschinen, etc. diese Daten verwenden. W3C schreibt dazu:

These attributes are not intended for use by software that is independent of the site that uses the attributes.

Auslesen der Custom Data Attributes

Das Hinzufügen der Daten im HTML-Code ist selbstverständlich nur der erste Schritt, denn im zweiten Schritt müssen diese Informationen auch wieder ausgelesen werden. Hierzu greift man mit JavaScript einfach auf das dataset zu, dass alle eigenen data-Attribute enthält.

JavaScript:

  1. span style="color: #3366CC;">'li''releaseYear'] );

Zu beachten ist an dieser Stelle, dass aus der Schreibweise mit Bindestrichen im HTML-Code eine CamelCase-Schreibweise in JavaScript wurde.

Code-Beispiel

Hier ein kurzes Beispiel mit den oben bereits gezeigten Beatles-Alben. Ein Klick auf die Buttons filtert die angezeigten Alben nach dem Erscheinungsjahr, die aus dem Attribut data-release-year stammen.

Link: Embedding custom non-visible data with the data-* attributes (W3C)