Lompat ke konten utama
←

JavaScript dari Nol

Pelajaran 22 dari 23

Menyentuh halaman (DOM)

Delegasi event dan submit formulir

Setelah pelajaran ini kamu bisa memasang satu penanggap di induk untuk banyak anak memakai bubbling, e.target, dan closest, serta menahan kiriman bawaan formulir dengan preventDefault.

  • ±14 menit
  • 3 latihan
  • Diperiksa 28 Okt 2026

Latihan di pelajaran ini butuh akun gratis. Progres, kode, dan catatanmu hanya tersimpan di browser ini. Masuk untuk menyimpannya

Materi

Peristiwa tidak berhenti di elemen yang diklik. Setelah penanggap di elemen itu berjalan, peristiwanya naik ke induk, lalu ke induk berikutnya, sampai document. Gerak naik ini disebut bubbling, dan ia membuka satu pola: pasang satu penanggap di induk, bukan satu penanggap per anak.

const keranjang = document.querySelector("#keranjang");

keranjang.addEventListener("click", (e) => {
  const tombol = e.target.closest(".hapus");
  if (!tombol) return; // klik di luar tombol hapus
  const baris = tombol.closest("li");
  console.log(`hapus barang ${baris.dataset.id}`);
  baris.remove();
});

Di dalam penanggap, e.target adalah elemen yang sebenarnya diklik, dan e.currentTarget adalah elemen tempat penanggap dipasang. Method closest(pemilih) mencari mulai dari elemen itu sendiri ke arah induk-induknya dan mengembalikan yang pertama cocok, atau null. Pola ini disebut delegasi event. Baris yang ditambahkan belakangan ikut tertangani tanpa penanggap baru, karena peristiwanya tetap naik ke induk yang sama. Atribut data-id="12" dibaca lewat dataset sebagai teks: baris.dataset.id memberi "12".

Formulir punya peristiwa submit, yang terjadi di elemen form saat tombol kirim ditekan; menekan Enter di isian teks juga lazim memicunya. Bawaan browser adalah mengirim data lalu memuat halaman baru. Memanggil e.preventDefault() di penanggap submit membatalkan bawaan itu, sehingga JavaScript bisa memeriksa isian dan menambah baris di halaman yang sama. Karena itu penanggapnya dipasang di form, bukan di klik tombol.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Tombol hapus berisi <span class="ikon">×</span> Hapus. Penanggap click di ul memeriksa if (e.target.classList.contains("hapus")) sebelum menghapus baris. Apa yang terjadi saat pengguna mengklik tepat di ikon ×?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Lanjutkan ke

Tampilkan 2 lagi

Sebagian materi kelas ini diadaptasi dari Microsoft Web Dev for Beginners (2-js-basics, 4-typing-game, 7-bank-project) (MIT), Exercism — jalur JavaScript (MIT).