Jak używać data-* do przechowywania danych

Jak używać data-* do przechowywania danych

Atrybuty data-* w HTML pozwalają dodawać własne, niestandardowe informacje do dowolnych znaczników. Są one niewidoczne dla użytkownika, ale dostępne dla JavaScriptu, dzięki czemu idealnie nadają się do przekazywania danych między strukturą HTML a logiką strony.

Co to jest data-*?

Atrybut data-* to specjalny sposób na umieszczanie dodatkowych danych w HTML. Składnia:

<element data-klucz="wartość">...</element>

Przykład:

<button data-product-id="1234">Dodaj do koszyka</button>

Dzięki temu, bez używania klasy lub ID, możesz przechowywać np. identyfikator produktu, status, nazwę kategorii itp.

Zasady nazywania data-*
  • Nazwa po data- musi składać się z liter, cyfr i myślników (np. data-user-role)
  • W JavaScript odczytujesz te dane przez dataset, zamieniając myślniki na camelCase (np. data-user-roledataset.userRole)
Przykład 1: dane o produkcie
<div class="product" data-id="452" data-category="books" data-stock="low">
  <h3>Nowa książka</h3>
  <p>Dostępność: mało</p>
</div>

W tym komponencie przechowujemy: ID produktu, kategorię oraz status magazynowy – bez użycia klas czy dodatkowych atrybutów.

Przykład 2: dane w formularzu
<input type="text" name="kod" data-validation="required" data-error-msg="Wpisz kod promocyjny">

Tu atrybuty data-* mogą być użyte przez JavaScript do walidacji formularza – bez konieczności pisania warunków „na sztywno” w kodzie JS.

Przykład 3: lista z priorytetem
<li data-priority="1">Zadanie krytyczne</li>
<li data-priority="3">Zadanie niskiego priorytetu</li>

Na tej podstawie możesz sortować elementy, zmieniać kolory, animacje, style – wszystko na podstawie jednej dynamicznej wartości.

Dobre praktyki
  • Używaj data-* tylko do przechowywania danych logicznych – nie stylizacyjnych (np. NIE: data-color="red")
  • Nie przesadzaj z liczbą atrybutów – traktuj je jak API komponentu
  • Stosuj jednolite konwencje nazw: np. data-user-id, data-product-name
🔗 Przetestuj samodzielnie

Stwórz własną strukturę HTML z trzema elementami (np. przyciskami, wpisami na blogu, produktami) i dodaj do nich atrybuty data-*. Spróbuj opisać: ID, typ, status, priorytet itp. Przetestuj strukturę w JSFiddle.

💡 Wskazówka

data-* to most między HTML a JavaScriptem – traktuj to jak interfejs komponentu. Dzięki temu komponenty HTML mogą być dynamiczne, skalowalne i niezależne od logiki zapisanej w skryptach.