Data Attributes
Intro
id
’s of class
-namen te gebruiken.
➡️ Oplossing: Data-attributes! 🎉
Wat zijn data attributes?
Data attributes
data-
gevolgd door een naam naar keuze
<button data-product-id="tshirt-21" data-category="shirts" data-stock="true">
Voeg toe aan winkelmandje
</button>
Data attributes
data-a-custom-name="some value"
name
Het attribuut start met 'data-'. Daarna volgt een naam naar keuze in kebab-case.
value
De waarde, in de vorm van een string.
Data attributes gebruiken
Uitlezen
.dataset
gevolgd door een punt .
en de naam van het data-attribuut in camelCase
<button data-product-id="tshirt-21" data-category="shirts" data-stock="true">
Voeg toe aan winkelmandje
</button>
index.html
const button = document.querySelector("button");
console.log(button.dataset.productId); // "tshirt-21"
console.log(button.dataset.category); // "shirts"
console.log(button.dataset.stock); // "true" (string!)
main.js
Aanpassen
.dataset
gevolgd door een punt .
en de naam
van het data-attribuut<button data-product-id="tshirt-21" data-category="shirts" data-stock="true">
Voeg toe aan winkelmandje
</button>
index.html
button.dataset.productId = "broek-123";
main.js
<button data-product-id="broek-123" data-category="shirts" data-stock="true">
Voeg toe aan winkelmandje
</button>
Gewijzigde DOM
Verwijderen
delete
gevolgd door het attribute<button data-product-id="tshirt-21" data-category="shirts" data-stock="true">
Voeg toe aan winkelmandje
</button>
index.html
delete button.dataset.category;
main.js
<button data-product-id="broek-123" data-stock="true">
Voeg toe aan winkelmandje
</button>
Gewijzigde DOM
Typecasing
Data attribute types wijzigen
Booleans
✅ Kan je handmatig omzetten met JSON.parse()
console.log(button.dataset.stock); // "true" (string!)
console.log(button.dataset.stock === true); // false 😱
const isInStock = JSON.parse(button.dataset.stock);
console.log(isInStock); // true (nu een echte boolean)
Numbers
✅ Kan je handmatig omzetten met Number()
button.dataset.productId = "123";
console.log(button.dataset.productId + 1); // "1231" (string!)
const productId = Number(button.dataset.productId);
console.log(productId + 1); // 124