HTMLElement. dataset
Obiekt z wartościami atrybutów data-* elementu, do odczytu i zapisu własnych danych.
- Zwraca
- Obiekt
DOMStringMapz wartościami atrybutówdata-*zapisanymi jako napisy.
Przykład
#const course = document.querySelector('#course')
console.log(course.dataset.courseId)
console.log(Number(course.dataset.price) * 2)
console.log(course.dataset.premium === 'true')
console.log(course.dataset)Definicja i zastosowanie
#Atrybuty zaczynające się od data- pozwalają zapisać w HTML własne informacje, np. identyfikator kursu czy cenę produktu. Właściwość dataset udostępnia je jako obiekt: atrybut data-course-id jest dostępny jako dataset.courseId. Części nazwy po myślnikach zaczynają się wielką literą (zapis camelCase).
Wszystkie wartości w dataset są napisami. Liczbę trzeba zamienić przez Number(), a wartość logiczną porównać z napisem, np. dataset.premium === "true". Przypisanie nowej wartości tworzy lub zmienia atrybut w HTML, a delete element.dataset.nazwa go usuwa.
Atrybuty data-* świetnie sprawdzają się przy delegowaniu zdarzeń: jedna funkcja obsługuje wiele przycisków, a każdy przycisk niesie informację, czego dotyczy. Możesz też stylować elementy w CSS selektorem atrybutu, np. [data-status="done"].
Składnia
#element.dataset.name
element.dataset.name = value
delete element.dataset.nameWięcej przykładów
#const task = document.querySelector('#task')
task.dataset.status = 'done'
task.dataset.completedAt = '2026-09-28'
console.log(task.getAttribute('data-status'))
console.log(task.getAttribute('data-completed-at'))
delete task.dataset.completedAt
console.log(task.hasAttribute('data-completed-at'))const shop = document.querySelector('#shop')
shop.addEventListener('click', (event) => {
const { item, cost } = event.target.dataset
if (!item) return
console.log(`Kupujesz: ${item} za ${cost} monet`)
})
shop.querySelector('[data-item="theme"]').click()Obsługa przeglądarek
#Szeroko dostępne
Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#- Pamiętaj, że
datasetzwraca napisy.dataset.price + 1da"491", a nie50. Zamień wartość przezNumber(). - W HTML pisz nazwy małymi literami z myślnikami (
data-course-id), a w JavaScripcie odczytuj je w zapisie camelCase (dataset.courseId). - Nie przechowuj w
data-*danych wrażliwych. Każdy może je zobaczyć w kodzie strony.
Powiązane hasła
#- Element.setAttribute()Ustawia wartość atrybutu HTML elementu albo dodaje nowy atrybut.
- Event.targetElement, na którym faktycznie wystąpiło zdarzenie, np. kliknięty przycisk wewnątrz listy.
- Element.classListObiekt do dodawania, usuwania, przełączania i sprawdzania klas CSS elementu.
- document.querySelector()Zwraca pierwszy element pasujący do selektora CSS albo null, gdy nic nie pasuje.
- Number.parseInt()Zamienia początek napisu na liczbę całkowitą w wybranym systemie liczbowym.
Widzisz błąd albo brakuje przykładu? Napisz do nas.