Mengelola classList adalah teknik paling profesional dan bersih dalam memanipulasi tampilan website. Alih-alih menulis gaya CSS satu per satu di dalam JavaScript, kita cukup "menyalakan" atau "mematikan" class yang sudah ada di file CSS kita.
Berikut adalah panduan mendalam mengenai empat metode utama classList.
1. classList.add()
Digunakan untuk menambahkan satu atau lebih class ke sebuah elemen. Jika class tersebut sudah ada, JavaScript tidak akan menambahkannya lagi (mencegah duplikasi).
-
Kegunaan: Menampilkan modal, memberikan highlight pada elemen yang dipilih, atau mengaktifkan animasi.
-
Contoh:
JavaScriptconst box = document.querySelector(".box"); box.classList.add("active", "highlight");
2. classList.remove()
Kebalikan dari add, metode ini digunakan untuk menghapus class tertentu dari elemen.
-
Kegunaan: Menyembunyikan elemen, menghapus status error pada form, atau menghentikan animasi.
-
Contoh:
const menu = document.querySelector(".nav-menu"); menu.classList.remove("open"); ``` --- ## 3. classList.toggle()
Ini adalah metode yang paling "pintar" dan sangat sering digunakan. `toggle` bekerja seperti saklar lampu:
* Jika class **sudah ada**, maka akan **dihapus**.
* Jika class **belum ada**, maka akan **ditambahkan**. * **Kegunaan:** Tombol Dark Mode, menu hamburger (buka/tutup), atau dropdown.
* **Contoh:** ```javascript const btnTheme = document.querySelector("#theme-switcher"); btnTheme.addEventListener("click", () => { document.body.classList.toggle("dark-mode"); }); ``` --- ## 4. classList.contains()
Metode ini digunakan untuk **memeriksa** apakah sebuah elemen memiliki class tertentu atau tidak. Hasilnya berupa nilai boolean (`true` atau `false`). * **Kegunaan:** Melakukan logika kondisional (if-else) berdasarkan status tampilan elemen.
* **Contoh:** ```javascript const notif = document.querySelector(".alert"); if (notif.classList.contains("error")) { console.log("Ada masalah pada validasi!"); } ``` --- ## Tabel Ringkasan | Metode | Fungsi | Hasil / Return |
| :--- | :--- | :--- |
| **`add`** | Menambah class | `undefined` |
| **`remove`** | Menghapus class | `undefined` |
| **`toggle`** | Tambah/Hapus otomatis | `boolean` (true jika jadi ada, false jika hilang) |
| **`contains`** | Cek keberadaan class | `boolean` (true/false) | --- ## Contoh Kasus: Komponen Accordion (Tanya-Jawab) Mari kita gabungkan semuanya dalam satu logika sederhana untuk komponen FAQ: ```javascript
const faqItem = document.querySelector(".faq-item"); faqItem.addEventListener("click", () => { // 1. Cek apakah item sudah terbuka const isOpen = faqItem.classList.contains("open"); if (isOpen) { // 2. Jika terbuka, tutup (remove) faqItem.classList.remove("open"); console.log("Menutup FAQ"); } else { // 3. Jika tertutup, buka (add) faqItem.classList.add("open"); console.log("Membuka FAQ"); } // Cara singkat pengganti if-else di atas: // faqItem.classList.toggle("open");
});
Kenapa Menggunakan classList Lebih Baik?
-
Separation of Concerns: CSS menangani tampilan, JavaScript menangani logika.
-
Performance: Mengubah satu class jauh lebih cepat bagi browser daripada mengubah 10 properti
.stylesatu per satu. -
Readability: Kode Anda lebih mudah dibaca;
classList.add("hidden")jauh lebih jelas maksudnya daripadastyle.display = "none".