DOM & User Interaction
Inilah puncak dari perjalanan belajar JavaScript Anda. Selama ini, kita hanya melihat hasil kode di dalam kotak hitam bernama Console. Sekarang, kita akan belajar cara menjembatani kode JavaScript kita dengan tampilan visual website yang dilihat oleh pengguna. Di sinilah Anda berubah dari seorang penulis logika menjadi seorang pengembang aplikasi web yang interaktif.
Apa itu DOM?
DOM (Document Object Model) adalah representasi dari halaman web Anda yang telah diubah oleh browser menjadi sebuah "pohon objek". Bayangkan halaman HTML Anda sebagai sebuah struktur pohon: <html> adalah akarnya, <body> adalah cabangnya, dan elemen seperti <h1> atau <button> adalah daun-daunnya.
Dengan JavaScript, kita bisa memanjat pohon ini, mengambil daunnya, mengubah warnanya, menghapus cabangnya, atau bahkan menanam daun baru secara dinamis tanpa harus me-refresh halaman.
Mengambil Elemen HTML
Sebelum memanipulasi sesuatu, kita harus "menangkap" elemen tersebut terlebih dahulu. JavaScript menyediakan beberapa cara, namun yang paling modern dan fleksibel adalah menggunakan querySelector.
1// Menangkap elemen berdasarkan ID
2const judul = document.querySelector("#title");
3
4// Menangkap elemen berdasarkan Class
5const deskripsi = document.querySelector(".description");
6
7// Menangkap elemen berdasarkan Tag
8const tombol = document.querySelector("button");Mengubah Konten & Style
Setelah elemen berhasil ditangkap dan disimpan ke dalam variabel, kita bisa mulai melakukan perubahan. Kita bisa mengubah teksnya (textContent), mengubah struktur HTML di dalamnya (innerHTML), atau memanipulasi tampilannya (style).
1const teksStatus = document.querySelector("#status");
2
3// Mengubah isi teks
4teksStatus.textContent = "Pesanan sedang diproses...";
5
6// Mengubah gaya visual (CSS via JS)
7teksStatus.style.color = "blue";
8teksStatus.style.fontWeight = "bold";Kesalahan Umum: Menggunakan properti CSS di JavaScript dengan tanda hubung (seperti font-weight) akan menyebabkan error. Di JavaScript, kita menggunakan format camelCase (seperti fontWeight).
Event Dasar & addEventListener
Agar website terasa hidup, ia harus bisa merespons tindakan pengguna (seperti klik, ketikan keyboard, atau pergerakan mouse). Tindakan ini disebut sebagai Event.
Kita menggunakan fungsi addEventListener() untuk "mendengarkan" kapan sebuah event terjadi, lalu menjalankan sebuah fungsi sebagai reaksinya.
1const tombolKlik = document.querySelector("#btn-magic");
2
3// addEventListener(nama_event, fungsi_yang_dijalankan)
4tombolKlik.addEventListener("click", function () {
5 alert("Tombol telah diklik! Keajaiban dimulai.");
6 document.body.style.backgroundColor = "lightyellow";
7});Alur Eksekusi:
- JavaScript mencari elemen dengan ID
btn-magic. - JavaScript memasang "telinga" (listener) pada tombol tersebut untuk mendeteksi klik.
- Saat pengguna mengklik tombol, fungsi di dalam kurung kurawal segera dijalankan.
- Muncul peringatan
alert, kemudian warna latar belakang seluruh halaman (document.body) berubah.
Studi Kasus: Interaksi User Sederhana (Counter)
Mari kita gabungkan semua yang telah kita pelajari: variabel, function, dan DOM untuk membuat aplikasi penghitung angka (Counter).
Struktur HTML (Asumsi):
1<h1 id="angka-counter">0</h1>
2<button id="btn-tambah">Tambah Angka</button>Kode JavaScript:
1// 1. Inisialisasi data di memori
2let angka = 0;
3
4// 2. Tangkap elemen DOM
5const tampilanAngka = document.querySelector("#angka-counter");
6const tombolTambah = document.querySelector("#btn-tambah");
7
8// 3. Buat logika interaksi
9tombolTambah.addEventListener("click", () => {
10 // Update data di memori
11 angka = angka + 1;
12
13 // Update tampilan visual agar sesuai dengan data
14 tampilanAngka.textContent = angka;
15
16 // Tambahan logika: jika angka mencapai 10, beri warna merah
17 if (angka >= 10) {
18 tampilanAngka.style.color = "red";
19 }
20});Kenapa ini penting? Contoh di atas menunjukkan pola dasar hampir semua aplikasi web modern:
- Data berubah (
angka). - Tampilan mengikuti perubahan data tersebut (
textContent). - Logika memberikan aturan tambahan (
if).
Prediksi Output: Setiap kali tombol diklik, angka di layar akan naik satu per satu. Saat klik ke-10, angka tidak hanya bertambah tetapi juga berubah warna menjadi merah. Pengguna merasakan pengalaman yang responsif dan dinamis.
Selamat! Anda telah menyelesaikan seluruh materi dasar JavaScript. Anda sekarang memiliki pondasi untuk membangun logika, mengelola data, dan berinteraksi dengan pengguna. Apakah Anda ingin saya membantu membuatkan ringkasan proyek akhir atau soal latihan evaluasi untuk menguji pemahaman Anda di seluruh section ini?