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