Kodokon kodokon.com

Attributs globaux et data-*

Exploitez les attributs utilisables partout et stockez vos propres données dans le HTML.

7 min · 3 questions

Ouvrir cette leçon dans Kodokon

Certains attributs fonctionnent sur n'importe quel élément : ce sont les attributs globaux. Vous utilisez déjà id et class ; ajoutez à votre boîte à outils hidden (masque l'élément), lang (indique la langue d'un passage), title (infobulle au survol) et tabindex (ordre de focus au clavier).

HTML
<p lang="en" title="Citation originale">
  Stay hungry, stay foolish.
</p>

<div hidden id="cookie-banner" class="banner">
  Nous utilisons des cookies.
</div>
lang, title et hidden en situation réelle.

Besoin d'attacher vos propres données à un élément ? N'inventez jamais d'attribut fantaisiste : le HTML réserve pour cela les attributs data-*. Vous choisissez le nom après le tiret, en minuscules et en kebab-case. Cas d'usage typiques : un identifiant de produit, un état d'interface, une configuration de composant.

HTML
<article
  class="product-card"
  data-product-id="42"
  data-category="books"
  data-in-stock="true"
>
  <h2>HTML pour les pros</h2>
</article>
Des données métier attachées à une carte produit.

Côté JavaScript, ces attributs se lisent via la propriété dataset. Attention à la conversion automatique : le kebab-case du HTML devient du camelCase en JavaScript. Ainsi data-product-id se lit avec dataset.productId. Les valeurs sont toujours des chaînes de caractères, même "true" ou "42".

JAVASCRIPT
const card = document.querySelector(".product-card");

console.log(card.dataset.productId); // "42"
console.log(card.dataset.inStock);   // "true"

card.dataset.state = "selected";
Lecture et écriture des data-* via dataset.

Quiz de validation

Vérifiez que vous avez bien retenu les points clés de cette leçon.

  1. Comment lire l'attribut data-user-id en JavaScript ?
    • element.dataset.userId
    • element.dataset.user-id
    • element.data.userId
    • element.getData("user-id")
  2. À quoi servent les attributs data-* ?
    • À stocker des données personnalisées lisibles par votre JavaScript
    • À accélérer le chargement des données de la page
    • À envoyer des données au serveur lors de la soumission d'un formulaire
  3. Quel attribut global masque un élément de manière sémantique ?
    • hidden
    • invisible
    • display