← Level 2 – Wizard

Pelajaran 8 dari 8 ⏱ 60 menit

Tantangan besar: menghidupkan seluruh situs web kamu

Misi terakhir Level 2. Semua mantra sekaligus – ditambah beberapa ide baru di atasnya.

Misi kamu

Kali ini tidak ada materi baru. kamu akan mendapatkan daftar tugas, dan kamu sudah mengetahui semua yang kamu perlukan untuk tugas tersebut. Seperti inilah pekerjaan pengembang sebenarnya: kamu mendapatkan serangkaian persyaratan dan menyusunnya dari hal-hal yang sudah kamu ketahui.

Bagian yang diperlukan 🎯

Buka situs web kamu dan pastikan kelima mantra dari level ini aktif di dalamnya:

  1. Skrip terhubung di setiap halaman dan tidak ada kesalahan di konsol (F12 – tidak ada warna merah yang muncul).
  2. Mode gelap – tombol di header pada setiap halaman, dan pilihannya diingat.
  3. Tombol atau penghitung interaktif – setidaknya satu mantra dengan variabel dan kondisi.
  4. Galeri foto dengan lightbox – mengklik akan membuat foto lebih besar.
  5. Kuis atau formulir dengan validasi – setidaknya salah satunya. Jangan ragu untuk melakukan keduanya!

Ekstensi opsional 🌟

Pilih setidaknya satu (atau buat sendiri):

Salam berdasarkan waktu

Situs web menyambut secara berbeda di pagi dan sore hari:

<p id="day-greeting"></p>
const dayGreeting = document.getElementById("day-greeting");
const hour = new Date().getHours();

if (hour < 9) {
  dayGreeting.textContent = "Good morning! ☀️";
} else if (hour < 18) {
  dayGreeting.textContent = "Hi there, have a nice day!";
} else {
  dayGreeting.textContent = "Good evening! 🌙";
}

new Date() mengembalikan tanggal dan waktu saat ini, .getHours() mengeluarkan jamnya.

Pesan acak saat diklik

Lelucon, ide perjalanan, atau nyanyian tim yang berbeda setiap saat:

const messages = [
  "Practice makes perfect!",
  "Let's go, Eagles! 🦅",
  "You miss every shot you don't take.",
  "Fans are the twelfth player.",
];

const messageButton = document.getElementById("message-button");
const messageEl = document.getElementById("message");

messageButton.addEventListener("click", () => {
  const random = Math.floor(Math.random() * messages.length);
  messageEl.textContent = messages[random];
});

Math.random() mengembalikan angka acak antara 0 dan 1, dan baris lainnya mengubahnya menjadi posisi acak dalam array.

Kunjungi konter (hanya untuk kamu)

Berapa kali kamu membuka situs web kamu? Simpan di Penyimpanan lokal:

let visits = Number(localStorage.getItem("visits") ?? 0);
visits++;
localStorage.setItem("visits", visits);
console.log("You've opened this page " + visits + " times now");

Nomor(...) mengubah teks dari memori menjadi angka, dan ?? 0 artinya “jika tidak ada apa-apa di sana, mulailah dari nol.”

Bagian yang dapat dilipat (akordeon)

Sembunyikan menu atau daftar panjang di bawah judul yang dapat diklik:

const sectionHeading = document.getElementById("expand-heading");
const sectionContent = document.getElementById("expand-content");

sectionHeading.addEventListener("click", () => {
  sectionContent.classList.toggle("hidden");
});

kamu sudah memiliki .hidden { display: none !important; } kelas dari pelajaran galeri.

Unggah versi baru ke internet

Website kamu di Halaman GitHub masih versi lama dari Level 1! Unggah yang baru:

  1. Buka repositori kamu di github.com,
  2. Tambahkan file → Unggah file,
  3. seret file yang diubah (terutama script.js, style.css, dan semua file .html) dan klik Komit perubahan.

Sebentar lagi, mantramu akan terlihat oleh semua orang.

Selamat, Penyihir! 🪄 Situs web kamu tidak hanya cantik lagi – namun hidup. Ia bereaksi terhadap klik, mengingat pilihan, mengajukan pertanyaan dan menjawabnya. Dan kamu tahu cara kerja setiap baris. Di Level 3 – Master, kamu akan belajar membuat situs web seperti para profesionalnya: React, komponen, dan server kamu sendiri.

Apa yang dapat diambil dari level ini

🏆 Diplomamu

Finale Wizard

Setelah mencentang semua pelajaran, kamu bisa cetak sertifikat.