DOM Manipulation
Event Listener

Event Listener: Pasang Kuping 👂

Website yang diem aja itu ngebosenin (kayak baca koran). Biar interaktif, kita harus pasang Event Listener.

Logikanya gini: "Eh Tombol, tolong dengerin ya. Kalau ada yang KLIK elo, jalanin fungsi ini."

1. Rumus Dasar 📐

// 1. Tangkep elemennya
const tombol = document.querySelector("#btn-sakti");
 
// 2. Pasang kuping
// elemen.addEventListener("kejadian", fungsi);
 
tombol.addEventListener("click", function () {
  alert("Woy! Jangan dipencet!");
  document.body.style.backgroundColor = "red";
});

2. Event yang Sering Dipake 📅

Ada ratusan event, tapi lo cuma perlu hafal 4 ini buat bertahan hidup.

A. Click (Klik Mouse) 🖱️

Paling umum. Buat tombol, link, atau gambar.

const btn = document.querySelector("button");
 
btn.addEventListener("click", () => {
  console.log("Tombol diklik!");
});

B. Input (Ngetik Real-time) ⌨️

Kejadian setiap kali user nekan tombol keyboard di dalam form. Cocok buat fitur Live Preview.

const inputNama = document.querySelector("#input-nama");
const teksPreview = document.querySelector("#hasil");
 
inputNama.addEventListener("input", function () {
  // Ambil apa yang diketik (value)
  const isi = inputNama.value;
 
  // Tampilin langsung
  teksPreview.innerText = isi;
});

C. Submit (Kirim Form) 📩

Khusus buat elemen <form>. PENTING: Form itu punya sifat alami mau me-refresh halaman (Reload). Kita harus cegah itu.

const formLogin = document.querySelector("#form-login");
 
formLogin.addEventListener("submit", function (e) {
  e.preventDefault(); // 🛑 MANTRA SAKTI: Cegah refresh halaman!
 
  console.log("Form dikirim, tapi halaman gak reload. Aman.");
});

D. Scroll (Gulung Layar) 📜

Biasanya buat animasi Navbar yang berubah warna pas di-scroll.

window.addEventListener("scroll", function () {
  console.log("Lagi scrolling nih...");
});

3. Parameter e (Event Object) 🕵️‍♂️

Pernah liat kodingan kayak function(e) atau function(event)? e adalah Laporan Kejadian. Isinya detail tentang event yang baru aja terjadi.

document.addEventListener("click", function (e) {
  // e.target = Elemen apa yang diklik?
  console.log("Lo baru aja ngeklik:", e.target);
 
  // e.clientX = Posisi mouse di koordinat X
  // e.clientY = Posisi mouse di koordinat Y
  console.log(`Posisi Mouse: ${e.clientX}, ${e.clientY}`);
});
💡

Tips: Selalu biasain pake e.preventDefault() kalau mainan sama Form atau Link (<a>), biar browser gak ngelakuin aksi default-nya (pindah halaman/refresh).