DOM Manipulation — JavaScript

Pas browser baca HTML kamu, dia gak baca string teks saja — dia ubah jadi struktur pohon yang bisa "disentuh" sama JavaScript. Pohon itu namanya DOM (Document…

Waktu browser membaca HTML, dia membangun versi halaman yang bisa disentuh JavaScript. Versi ini namanya DOM (Document Object Model): tiap tag jadi sebuah object yang bisa kamu ambil, ubah, tambah, atau hapus. Begitu DOM berubah, tampilan halaman ikut berubah.

🧪 Tebakan cepat: document.querySelector("h3") di halaman yang gak punya <h3> hasilnya apa? Tebak dulu, jawabannya ada di bagian "Ambil elemen, lalu ubah".

Ambil elemen, lalu ubah

Halamannya punya satu heading:

<h1>Judul Lama</h1>

JavaScript ini mengubahnya:

const judul = document.querySelector("h1");

judul.textContent = "Judul Baru";
judul.style.color = "blue";

Hasilnya, heading di halaman sekarang bertuliskan Judul Baru, warnanya biru.

Kalau gak ada elemen yang cocok, querySelector mengembalikan null (kosong). Jadi jawaban tebakan: null. Kalau kamu lanjut menulis null.textContent = ..., muncul TypeError "Cannot set properties of null". Cek lagi selector-nya.

Nama properti harus persis

const tombol = document.querySelector("#btn");

tombol.onclick = () => {
  tombol.textContent = "Sudah diklik";
};

Klik tombolnya, teksnya berubah. Kalau ditulis onClick (C besar), browser gak mengenalinya, jadi klik-nya gak memanggil apa-apa.

Tambah elemen baru

<div id="kotak"></div>
const p = document.createElement("p");
p.textContent = "Halo dari JavaScript";
document.querySelector("#kotak").appendChild(p);

Hasilnya: <div id="kotak"><p>Halo dari JavaScript</p></div>. Buat menghapus elemen, panggil p.remove().

textContent atau innerHTML

judul.textContent = "<b>Halo</b>"; // tampil persis: <b>Halo</b>
judul.innerHTML = "<b>Halo</b>";   // tampil: Halo, dicetak tebal

textContent memasang teks apa adanya, jadi tag HTML di dalamnya tampil sebagai tulisan biasa. innerHTML menjalankan HTML-nya. Buat teks biasa, apalagi yang diketik pengguna, pakai textContent, karena innerHTML bisa ikut menjalankan kode jahat yang diselipkan (namanya XSS).

⚠️ Jebakan yang sering ketemu

TL;DR: document.querySelector("selector") mengambil elemen pertama yang cocok, atau null kalau gak ada. el.textContent = "..." mengganti teks, el.style.color = "blue" mengganti gaya, dengan nama properti camelCase. Elemen baru dibuat dengan document.createElement("p"), diisi, lalu dimasukkan dengan induk.appendChild(p). Nama properti harus persis, misalnya onclick huruf kecil semua. Pakai textContent buat teks biasa, innerHTML cuma kalau memang mau menjalankan HTML.

Yang akan kamu pelajari