Apprends à utiliser les attributs data-* pour stocker des informations personnalisées sur les éléments HTML et y accéder avec l'API dataset de JavaScript.
HTML te permet d'ajouter des attributs personnalisés à n'importe quel élément en les préfixant avec data-. On les appelle attributs de données et ils fournissent un moyen standard d'intégrer des informations supplémentaires dans ton balisage.
<button data-action="delete" data-item-id="42">Delete</button>Les attributs de données :
data-* fait partie de la spécification.Les noms d'attributs de données doivent suivre ces règles :
data-.| Attribut | Usage |
|---|---|
data-id | Identifiant de l'élément |
data-type | Catégorie/type de l'élément |
data-status | État actuel (active, disabled, etc.) |
data-tooltip | Texte de l'infobulle |
data-sort-key | Valeur de tri |
data-config | Configuration (chaîne JSON) |
Garde les noms descriptifs mais concis. Utilise des tirets pour séparer les mots : data-user-role, pas data-userrole.
JavaScript fournit la propriété dataset sur chaque élément pour lire et écrire les attributs de données. Les noms avec tirets sont convertis en camelCase :
<div id="user" data-user-name="Alice" data-role="admin" data-login-count="5"></div>const el = document.getElementById('user');
// Lecture
console.log(el.dataset.userName); // "Alice"
console.log(el.dataset.role); // "admin"
console.log(el.dataset.loginCount); // "5" (toujours une chaîne)
// Écriture
el.dataset.status = 'online'; // ajoute data-status="online"
// Suppression
delete el.dataset.role; // supprime l'attribut data-roleNote que les valeurs de dataset sont toujours des chaînes de caractères. Parse-les avec parseInt(), JSON.parse(), etc. selon les besoins.
data-active="true", data-tab="settings"data-action="save" pour la délégation d'événements[data-theme="dark"] { ... }data-price="29.99", data-category="books"aria-label, aria-expanded, etc.) à la place.<!-- Product cards with data attributes -->
<div class="product-list">
<div class="card" data-product-id="101" data-category="electronics" data-price="299.99">
<h3>Wireless Headphones</h3>
<p>Price: $299.99</p>
<button data-action="add-to-cart" data-product-id="101">Add to Cart</button>
</div>
<div class="card" data-product-id="102" data-category="books" data-price="19.99">
<h3>HTML & CSS Guide</h3>
<p>Price: $19.99</p>
<button data-action="add-to-cart" data-product-id="102">Add to Cart</button>
</div>
</div>
<!-- CSS can target data attributes -->
<style>
[data-category="electronics"] { border-left: 3px solid #3498db; }
[data-category="books"] { border-left: 3px solid #2ecc71; }
</style>Comment accèdes-tu à l'attribut `data-user-name` en JavaScript ?