
Mini Project 5
Membuat Daftar Tugas yang Bisa Dipakai
oleh: Suryo Adhy Chandra, ST
Mini project ini menggabungkan hampir semua yang sudah dipelajari: struktur HTML, penataan dengan Flexbox, serta JavaScript untuk DOM dan event. Hasil akhirnya adalah daftar tugas sederhana yang benar-benar bisa dipakai, lengkap dengan menambah, menandai selesai, dan menghapus tugas.
Kerjakan bertahap dan jalankan setiap selesai satu tahap. Menumpuk banyak kode lalu menjalankannya sekaligus adalah cara tercepat untuk bingung ketika ada yang salah.
Tahap 1 — Menyiapkan rangka HTML
Buat satu berkas bernama tugas.html. Perhatikan bahwa kita memakai elemen
form, bukan sekadar tombol, agar pengguna bisa menekan Enter untuk menambah.
script sengaja diletakkan sebelum penutup body, bukan di dalam
head. Kalau ditaruh di head, JavaScript akan berjalan sebelum elemen-elemennya
ada, dan pencarian elemen akan menghasilkan null.
Tahap 2 — Menata tampilan dengan Flexbox
Tambahkan berkas tugas.css lalu sambungkan lewat tag link di head.
Flexbox dipakai dua kali di sini: untuk menyejajarkan kolom dengan tombol, dan untuk
merapikan tiap baris tugas.
Perhatikan flex: 1 1 auto pada kolom masukan. Itu yang membuat kolomnya melebar
mengikuti lebar layar sementara tombolnya tetap seukuran isinya, tanpa perlu menghitung
lebar apa pun.
Tahap 3 — Menambah tugas
Buat berkas tugas.js. Mulai dari bagian paling dasar dulu: menambahkan satu
baris ke daftar.
kolom.focus() mengembalikan kursor ke kolom masukan setelah tugas
ditambahkan. Detail kecil seperti ini yang membedakan aplikasi yang enak dipakai dari yang
sekadar berfungsi.
Tahap 4 — Menandai selesai dan menghapus
Sekarang tambahkan dua tombol pada setiap baris. Ganti isi fungsi tambahTugas
menjadi seperti ini:
Perhatikan bahwa penanganan klik dipasang saat baris itu dibuat, bukan sekali di awal program. Ini penting: baris yang belum ada tidak bisa dipasangi penanganan event.
Tahap 5 — Menampilkan ringkasan
Kalau ada yang tidak berjalan
- Halaman memuat ulang saat tombol ditekan. Berarti
event.preventDefault()belum dipanggil, atau penanganannya dipasang pada tombol bukan pada form. - Muncul pesan "Cannot read properties of null". Berarti tag script berada sebelum elemennya, atau ada salah ketik pada nama id.
- Tombol Selesai tidak berpengaruh. Periksa apakah nama class di CSS dan di JavaScript benar-benar sama, termasuk huruf besar kecilnya.
- Tampilan berantakan di ponsel. Periksa apakah tag
meta viewportsudah ada di head.
Pengembangan lanjutan
- Simpan daftar tugas ke
localStorageagar tidak hilang saat halaman ditutup. - Tambahkan penyaring untuk menampilkan hanya tugas yang belum selesai.
- Tambahkan tanggal tenggat pada setiap tugas, lalu tandai yang sudah lewat dengan warna berbeda.
- Tambahkan tombol untuk menghapus semua tugas yang sudah selesai sekaligus.
localStorage atau penyimpanan di sisi server, yang menjadi bahan pelajaran
berikutnya.