Kode JavaScript sudah jalan tanpa error tapi tampilan tidak berubah biasanya karena script mengeksekusi perintah sebelum elemen ada di halaman. Perbaiki urutan muatnya dulu, lalu cek selector dan cara render ulangnya. Tiga hal itu menyelesaikan sebagian besar kasus perubahan DOM tidak tampil.
Penyebab Perubahan DOM Tidak Tampil di Browser
Browser mengeksekusi JavaScript dari atas ke bawah. Script di head tanpa penunggu DOM akan mencari elemen yang belum dibuat.
- Script berjalan sebelum DOM siap, sehingga
getElementByIdmengembalikannull. - Selector salah atau elemen null karena salah tulis ID, kelas, atau elemen ada di halaman lain.
- Perubahan tertimpa oleh render ulang, misalnya fungsi render mengganti
innerHTMLinduk setelah teks diubah. - Properti DOM yang dipakai keliru, misalnya memakai
valueuntukdivatauinnerHTMLuntuk input.
Tabel Diagnosis Cepat
Gejala di DevTools Console biasanya langsung menunjuk penyebabnya:
| Kondisi | Penyebab | Solusi |
|---|---|---|
Elemen tidak berubah, muncul null |
Script jalan terlalu awal | Pindah script ke akhir body atau tunggu DOM siap |
| Script tidak berefek, tanpa error | Selector salah sasaran | Cek ID dan uji selector di Console |
| Update hilang setelah render | Induk di-render ulang | Ubah data dulu, baru render sekali |
Cara Memperbaiki Update DOM yang Tidak Muncul
Ikuti urutan ini agar tidak menebak-nebak:
- Pastikan posisi script sudah benar, idealnya sebelum penutup
</body>. - Cek elemen di Console dengan
document.querySelector("#status")dan pastikan tidaknull. - Perbaiki selector, bedakan
#statusuntuk ID dan.statusuntuk kelas. - Gunakan
textContentuntuk teks biasa agar lebih aman dan cepat. - Verifikasi di DevTools Elements apakah teks berubah tetapi tertutup CSS seperti
display: none.
// SALAH: elemen belum ada saat kode jalan
const el = document.querySelector("#status");
el.textContent = "Selesai";
// BENAR: tunggu DOM siap
document.addEventListener("DOMContentLoaded", () => {
const el = document.querySelector("#status");
if (!el) return;
el.textContent = "Selesai";
});
Kode benar menunggu event DOMContentLoaded, lalu memvalidasi el sebelum diubah. Pengecekan if (!el) return mencegah TypeError saat ID salah atau halaman berbeda.
Cara Mencegah DOM Gagal Terupdate
- Taruh script di akhir body atau pakai
deferuntuk script eksternal. - Validasi elemen sebelum diubah, terutama untuk komponen yang muncul kondisional.
- Hindari render ulang yang menghapus perubahan dengan memisahkan state data dari fungsi render.
FAQ
Kenapa textContent sudah diubah tapi tampilan tetap sama?
Kemungkinan kode mengubah elemen lain yang sama namanya, atau CSS menyembunyikan elemen tersebut.
Apakah script harus menunggu DOMContentLoaded?
Wajib bila script ada di head tanpa defer, tetapi tidak perlu bila script sudah di akhir body.
Kenapa perubahan hilang setelah data baru dirender?
Fungsi render menimpa seluruh isi induk, jadi simpan perubahan ke variabel data lalu panggil render ulang.