Ce face Atributele data-*
Orice atribut al cărui nume începe cu data- este valid în HTML5. Îl folosești pentru a pune pe element date de care are nevoie scriptul tău: un cod de produs, un preț, o stare. Browserul nu afișează și nu interpretează aceste valori.
În JavaScript, atributele sunt disponibile prin proprietatea element.dataset. Numele se transformă: prefixul data- dispare, iar cratimele urmate de o literă devin majusculă (camelCase). De exemplu, data-id-produs se citește cu dataset.idProdus. Valorile sunt întotdeauna șiruri de caractere.
În CSS poți selecta elemente după aceste atribute ([data-stare="epuizat"]) și poți afișa valoarea cu attr() în proprietatea content.
Atribute
| Atribut | Descriere |
|---|---|
data-nume |
Numele de după data- trebuie să aibă cel puțin un caracter, fără majuscule și fără să înceapă cu xml. Valoarea este un text oarecare. |
element.dataset |
Obiect JavaScript cu toate atributele data-* ale elementului, în format camelCase. Poți citi, modifica sau șterge (delete) valori. |
Exemple
Exemplul 1: Calcularea totalului unui coș din atribute data-*
Fiecare produs are prețul în data-pret. Scriptul îl transformă în număr și adună valorile.
<ul id="cos">
<li data-id-produs="1042" data-pret="12.50">Caiet A4</li>
<li data-id-produs="2210" data-pret="35.00">Rucsac</li>
<li data-id-produs="3301" data-pret="8.90">Pix albastru</li>
</ul>
<p id="total"></p>
<script>
let total = 0;
for (const produs of document.querySelectorAll("#cos li")) {
total += Number(produs.dataset.pret);
}
document.getElementById("total").textContent = "Total: " + total.toFixed(2) + " lei";
</script>
Ce afișează browserul
• Caiet A4
• Rucsac
• Pix albastru
Total: 56.40 lei
Exemplul 2: Stilizarea după valoarea unui atribut data-*
Selectorul de atribut din CSS colorează produsele epuizate, fără clase suplimentare.
<style>
[data-stare="epuizat"] { color: #9ca3af; text-decoration: line-through; }
</style>
<ul>
<li data-stare="in-stoc">Cană ceramică – 25 lei</li>
<li data-stare="epuizat">Tricou Iași – 60 lei</li>
</ul>
Ce afișează browserul
• Cană ceramică – 25 lei
• Tricou Iași – 60 lei (gri, tăiat cu o linie)
Greșeli frecvente
- Citirea cu numele original din HTML:
dataset["id-produs"]întoarceundefined. Corect estedataset.idProdus. - Adunarea directă a valorilor:
dataset.preteste un șir, așa că"12.50" + "35.00"dă"12.5035.00". Transformă mai întâi cuNumber(). - Păstrarea datelor sensibile (parole, tokenuri) în atribute
data-*. Oricine le vede în codul sursă al paginii.
Comenzi înrudite
Atributul class: Atribuie unui element una sau mai multe clase separate prin spațiu, folosite pentru stiluri CSS și selectare din JavaScript.Atributul id: Dă unui element un identificator unic în pagină, folosit de linkuri cu #, de CSS, de JavaScript și de etichetele formularelor.<li>: Reprezintă un element individual într-o listă ordonată (ol) sau neordonată (ul).<script>: Încarcă sau conține cod executabil JavaScript pentru a adăuga interactivitate paginii.