JavaScript Dasar
DOM & API
Manipulasi DOM dan penggunaan Fetch API dalam JavaScript
<hr>
<div class="dom-demo p-4 my-4 border border-gray-300 rounded">
<h2 class="text-xl font-bold mb-3">Demo Manipulasi DOM</h2>
<div id="dom-output" class="mb-3"></div>
<button id="btn-tambah-item" class="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-600">Tambah Item</button>
<button id="btn-hapus-item" class="bg-red-500 text-white px-4 py-2 rounded hover:bg-red-600">Hapus Item</button>
<button id="btn-ubah-warna" class="bg-green-500 text-white px-4 py-2 rounded hover:bg-green-600">Ubah Warna</button>
</div>// Manipulasi DOM
const domOutput = document.getElementById("dom-output");
let itemCount = 0;
// Fungsi untuk menambahkan item
document.getElementById("btn-tambah-item").addEventListener("click", function() {
itemCount++;
const newItem = document.createElement("div");
newItem.className = "p-2 mb-2 bg-gray-100 rounded";
newItem.innerText = `Item ${itemCount}`;
domOutput.appendChild(newItem);
});
// Fungsi untuk menghapus item
document.getElementById("btn-hapus-item").addEventListener("click", function() {
if (domOutput.lastChild) {
domOutput.removeChild(domOutput.lastChild);
itemCount--;
}
});
// Fungsi untuk mengubah warna background
document.getElementById("btn-ubah-warna").addEventListener("click", function() {
const colors = ["bg-blue-100", "bg-green-100", "bg-yellow-100", "bg-pink-100"];
const randomColor = colors[Math.floor(Math.random() * colors.length)];
domOutput.className = `p-4 mb-3 ${randomColor} rounded`;
});Manipulasi DOM adalah salah satu fitur paling powerful dalam JavaScript. Dengan DOM manipulation, Kalian dapat membuat, mengubah, atau menghapus elemen HTML secara dinamis tanpa harus reload halaman.
Fetch API dan Async/Await
Pelajari cara menggunakan Fetch API dan async/await untuk mengambil data dari server:
<hr>
<div class="api-demo p-4 my-4 border border-gray-300 rounded">
<h2 class="text-xl font-bold mb-3">Demo Fetch API</h2>
<button id="btn-fetch" class="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-600">Ambil Data</button>
<div id="api-output" class="mt-3"></div>
</div>// Fetch API dengan async/await
document.getElementById("btn-fetch").addEventListener("click", async function() {
try {
const response = await fetch("https://jsonplaceholder.typicode.com/posts");
const data = await response.json();
const apiOutput = document.getElementById("api-output");
apiOutput.innerHTML = "<h3 class='font-bold mb-2'>Daftar Post:</h3>";
data.slice(0, 5).forEach(post => {
apiOutput.innerHTML += `
<div class="p-3 mb-2 bg-gray-100 rounded">
<h4 class="font-semibold">${post.title}</h4>
<p class="text-sm">${post.body}</p>
</div>
`;
});
} catch (error) {
console.error("Error fetching data:", error);
document.getElementById("api-output").innerHTML = `
<div class="p-3 bg-red-100 text-red-800 rounded">
Gagal mengambil data: ${error.message}
</div>
`;
}
});Fetch API adalah cara modern untuk melakukan HTTP requests di JavaScript. Kombinasi dengan async/await membuat kode asynchronous menjadi lebih mudah dibaca dan dipahami, mirip seperti kode synchronous.
Hasil Praktikum
Setelah menyelesaikan semua langkah praktikum, Kalian seharusnya telah:
- Membuat file HTML dan JavaScript yang terhubung
- Menggunakan variabel, tipe data, dan operator
- Mengimplementasikan struktur kondisional dan loop
- Membuat dan menggunakan fungsi
- Menangani event dan memanipulasi DOM
- Menggunakan array dan objek
- Mengambil data dari API menggunakan Fetch API
Tips dan Best Practices
Perhatikan!
- Selalu gunakan
constuntuk nilai yang tidak berubah, danletuntuk nilai yang berubah - Hindari penggunaan
varkecuali ada kebutuhan khusus untuk backward compatibility - Gunakan
===untuk comparison, bukan==untuk menghindari type coercion - Selalu handle error saat menggunakan async operations
- Gunakan camelCase untuk penamaan variabel dan fungsi
Latihan
- Buat form input untuk menambahkan data mahasiswa baru dengan validasi form
- Implementasikan localStorage untuk menyimpan data mahasiswa secara persisten
- Tambahkan fitur search/filter pada daftar post dari API berdasarkan title
- Buat fitur dark mode toggle menggunakan manipulasi class CSS
- Implementasikan pagination untuk menampilkan data dari API dengan tombol "Previous" dan "Next"
- Buat aplikasi Todo List sederhana dengan fitur tambah, hapus, dan tandai selesai menggunakan DOM manipulation dan localStorage
