Data Attributes — HTML

Pernah pengen nempelin info tambahan ke elemen HTML buat dipake JavaScript atau CSS — tapi HTML gak punya atribut bawaan yang cocok? Sebelum 2010, developer…

Atribut data-* adalah atribut buatan kamu sendiri buat nempelin info tambahan ke elemen HTML. Namanya bebas, asal diawali data-, misalnya data-color atau data-user-id. Browser gak menampilkan info ini di halaman. Yang membaca dan memakainya adalah CSS dan JavaScript kamu.

🧪 Tebakan cepat: kalau kamu tulis data-price="150000" di sebuah <div>, angka 150000 muncul di halaman gak? Tebak dulu, jawabannya ada di bagian "Nempelin info ke elemen".

Nempelin info ke elemen

Ini kartu anggota dengan tiga atribut data:

<div class="kartu" data-color="biru" data-active="true" data-user-id="42">
  Budi
</div>

Hasilnya, di halaman cuma kelihatan tulisan "Budi". Nilai biru, true dan 42 gak tampil, tapi tetap nempel di elemen itu.

Atribut data bisa dipasang di tag apa aja, termasuk tombol. Ingat, teks tombol bukan atribut. Teksnya tetap ditulis di antara tag pembuka dan penutup:

<button data-action="hapus" data-id="7">Hapus</button>

Kenapa harus diawali data-? Atribut karangan tanpa awalan, misalnya warna="biru", gak valid dan bisa bentrok dengan atribut resmi yang nanti ditambahkan ke HTML. Awalan data- memang disediakan buat info milik kamu sendiri.

Membaca dari JavaScript lewat dataset

const kartu = document.querySelector(".kartu");
kartu.dataset.color;  // "biru"
kartu.dataset.userId; // "42"

Dipakai CSS buat milih elemen

[data-color="biru"] { background: lightblue; }

Kurung siku artinya "pilih elemen yang atribut ini nilainya segini". Ganti data-color="biru" di HTML jadi "hijau", dan aturan CSS buat hijau yang dipakai. Gak perlu bikin class baru.

⚠️ Jebakan yang sering ketemu

TL;DR: Atribut data-* nempelin info ke elemen tanpa tampil di halaman. Tulis di tag pembuka, nama huruf kecil sesudah data-, nilai dalam tanda kutip. Satu elemen boleh punya banyak. JavaScript membacanya lewat dataset, dengan nama camelCase (data-user-id jadi dataset.userId), dan nilainya selalu string. CSS memilihnya dengan [data-color="biru"].

Yang akan kamu pelajari