Selector sudah benar tapi querySelector atau getElementById tetap mengembalikan null biasanya karena script jalan sebelum elemen ada di DOM. Perbaikan tercepat: pindah script ke akhir body atau bungkus kode dengan DOMContentLoaded, lalu pasang guard null sebelum akses properti.
Penyebab Element Not Found di DOM
null berarti pencarian selesai tapi tidak ada elemen yang cocok. Error berikutnya seperti Cannot read properties of null adalah TypeError karena kode memaksa membaca properti dari nilai null tersebut.
- Typo selector:
#judulbeda dengan#Judul, titik untuk class dan pagar untuk ID tertukar. - Elemen memang belum ada: script di
headdieksekusi sebelum parser HTML mencapai elemen target. - Elemen dibuat belakangan lewat JavaScript, hasil fetch, atau template, lalu langsung dicari sebelum sempat dirender.
Tabel Troubleshooting Element Not Found
Cek kondisi null dulu di console sebelum mengubah properti atau memasang event.
| Error/Kondisi | Penyebab | Solusi |
|---|---|---|
getElementById null |
ID salah atau script terlalu cepat | Cocokkan atribut id, tunggu DOMContentLoaded |
querySelector null |
Selector class/atribut keliru | Uji selector di DevTools, perbaiki sintaks CSS |
| Null hanya untuk konten dinamis | Elemen belum dibuat saat dicari | Cari ulang setelah render atau pakai event delegation |
Cara Memperbaiki Element Not Found
- Buka Elements di DevTools dan pastikan ID atau class benar-benar ada.
- Pastikan DOM siap dengan memindah script ke akhir body atau memakai
DOMContentLoaded. - Untuk elemen dinamis, jalankan pencarian setelah elemen dimasukkan ke dokumen.
// SALAH: script jalan sebelum #judul ada
const judul = document.querySelector("#judul");
judul.textContent = "Halo";
// BENAR
document.addEventListener("DOMContentLoaded", () => {
const judul = document.querySelector("#judul");
if (!judul) return;
judul.textContent = "Halo";
});
Kode benar menunggu dokumen selesai diparsing. Guard if (!judul) return; menghentikan eksekusi bila elemen tetap tidak ditemukan, sehingga tidak muncul TypeError lanjutan.
Cara Mencegah Error Serupa
- Validasi selector dengan
console.log(el)sebelum menulis logika lanjutan. - Atur urutan load: script utama di akhir body atau pakai atribut
deferuntuk script eksternal. - Gunakan
textContentuntuk teks biasa danevent delegationuntuk tombol atau daftar yang dibuat dinamis.
FAQ
Kenapa getElementById mengembalikan null padahal ID ada?
Umumnya script dieksekusi sebelum elemen dirender, atau ada salah kapitalisasi ID.
Apakah script harus selalu di akhir body?
Tidak wajib, script di head tetap aman bila memakai defer atau DOMContentLoaded.
Bagaimana menangani elemen yang dibuat lewat JavaScript?
Cari elemen setelah fungsi render berjalan, atau pasang listener di elemen induk dengan event delegation.