Error Cannot read properties of undefined (reading ‘style’) berarti kode membaca .style dari variabel yang isinya undefined. Perbaikan tercepat: cek hasil querySelector atau getElementById dengan console.log sebelum menyentuh .style, lalu perbaiki selector atau waktu eksekusi script.
Penyebab Style of Undefined Muncul di Browser
Browser menampilkan TypeError ini saat objek di sebelah kiri .style belum pernah diisi elemen DOM. Kondisinya murni runtime di browser, bukan SyntaxError.
Bedakan dua kasusnya. style of undefined umumnya berasal dari variabel biasa, indeks array, atau fungsi tanpa return. style of null umumnya berasal dari querySelector atau getElementById yang tidak menemukan elemen.
Penyebab paling sering adalah selector salah ketik, ID memakai nama berbeda antara HTML dan JavaScript, script berjalan sebelum DOM siap, atau elemen diambil dari daftar dinamis yang belum dirender.
Tabel Troubleshooting Cepat
Cetak dulu elemennya, jangan langsung menebak. Satu baris console.log(el) sudah memperlihatkan apakah masalahnya selector, timing, atau data.
| Error/Kondisi | Penyebab | Solusi |
|---|---|---|
style dari undefined |
Variabel kosong, indeks array salah | Periksa assignment dan nilai return fungsi |
style dari null |
Selector tidak cocok | Samakan ID atau class dengan HTML |
| Elemen kadang ada, kadang error | Script jalan sebelum DOM siap | Pindah script ke akhir body atau pakai DOMContentLoaded |
- Gunakan
console.log(banner)tepat sebelum baris.style. - Tambahkan guard sederhana seperti
if (!banner) return;. - Periksa tab Elements untuk memastikan ID benar benar ada.
Cara Memperbaiki Error Style Undefined
Ikuti urutan ini agar sumber masalah ketemu, bukan hanya gejalanya yang hilang.
- Pastikan elemen dengan ID tersebut memang ada di HTML.
- Perbaiki selector, termasuk tanda pagar untuk ID dan titik untuk class.
- Pindahkan script ke sebelum penutup
body. - Jika script harus di
head, bungkus akses DOM denganDOMContentLoaded. - Uji ulang dengan guard sebelum menulis properti style.
// SALAH: box bisa undefined atau null
box.style.display = "none";
// BENAR
const box = document.querySelector("#banner");
if (!box) {
console.log("Elemen #banner tidak ditemukan");
} else {
box.style.display = "none";
}
Baris querySelector("#banner") mengambil elemen pertama yang cocok. Guard if (!box) menghentikan kode bila elemen tidak ada. Baris terakhir baru aman mengubah tampilan karena box sudah pasti elemen.
Cara Mencegah Error Terulang
- Selalu cek null sebelum mengakses properti DOM dari hasil query.
- Query ulang elemen dinamis setelah dibuat, jangan memakai referensi lama.
- Jangan memanggil
.stylelangsung ke NodeList, akses dulu indeksnya atau loop. - Pakai
classList.adduntuk perubahan tampilan berulang agar CSS tetap terpusat. - Pakai
textContentbila hanya perlu mengubah teks, bukan gaya visual.
FAQ
Kenapa element.style error padahal ID ada di HTML?
Kemungkinan script berjalan sebelum elemen dirender atau penulisan selector berbeda satu huruf.
Apakah optional chaining cukup untuk error style of undefined?
box?.style.display mencegah crash, tetapi elemen tetap tidak berubah sehingga penyebabnya tetap perlu diperbaiki.
Kapan memakai DOMContentLoaded untuk akses style?
Pakai saat script berada di head, memakai modul terpisah, atau manipulasi harus siap segera setelah struktur HTML selesai diparsing.