HTMLElement.dataset

Un objet avec les valeurs des attributs data-* d’un élément, pour lire et écrire vos propres données.

Renvoie
Un objet DOMStringMap avec les valeurs des attributs data-* enregistrées comme des chaînes.
Sur cette page

Exemple

#
JavaScript
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)
Console
42
98
true
DOMStringMap { courseId: '42', price: '49', premium: 'true' }

Définition et utilisation

#

Les attributs qui commencent par data- permettent d’enregistrer dans le HTML vos propres informations, par ex. l’identifiant d’un cours ou le prix d’un produit. La propriété dataset les expose comme un objet : l’attribut data-course-id est accessible via dataset.courseId. Les segments du nom après les tirets commencent par une majuscule (notation camelCase).

Toutes les valeurs de dataset sont des chaînes. Un nombre doit être converti avec Number(), et une valeur booléenne comparée à une chaîne, par ex. dataset.premium === "true". Affecter une nouvelle valeur crée ou modifie l’attribut dans le HTML, et delete element.dataset.nom le supprime.

Les attributs data-* sont parfaits pour la délégation d’événements : une seule fonction gère plusieurs boutons, et chaque bouton transporte l’information sur ce qu’il concerne. Vous pouvez aussi styliser des éléments en CSS avec un sélecteur d’attribut, par ex. [data-status="done"].

Syntaxe

#
Syntaxe
element.dataset.name
element.dataset.name = value
delete element.dataset.name

Plus d’exemples

#
Écrire et supprimer des données
JavaScript
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'))
Console
done
2026-09-28
false
Délégation d’événements avec data-*
JavaScript
const shop = document.querySelector('#shop')

shop.addEventListener('click', (event) => {
  const { item, cost } = event.target.dataset
  if (!item) return
  console.log(`Achat : ${item} pour ${cost} pièces`)
})

shop.querySelector('[data-item="theme"]').click()
Console
Achat : theme pour 250 pièces

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • N’oubliez pas que dataset renvoie des chaînes. dataset.price + 1 donnera "491", et non 50. Convertissez la valeur avec Number().
  • En HTML, écrivez les noms en minuscules avec des tirets (data-course-id), et en JavaScript, lisez-les en notation camelCase (dataset.courseId).
  • Ne stockez pas de données sensibles dans data-*. N’importe qui peut les voir dans le code de la page.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.