Tutorial Membuat Aplikasi Todolist dengan Javascript dan Local Storage

Share:
todolist application

Dalam tutorial ini, kita akan belajar bagaimana membuat aplikasi To-Do List yang mudah digunakan, di mana data tugas Anda akan disimpan secara lokal di browser menggunakan fitur Local Storage. Ini berarti, setiap kali Anda membuka kembali aplikasi ini, daftar tugas Anda akan tetap ada dan tidak akan hilang. Mari kita mulai perjalanan ini untuk membuat aplikasi produktivitas yang berguna hanya dengan menggunakan JavaScript!


Membuat Aplikasi Todolist dengan Javascript

1. Buatlah sebuah folder baru dengan nama todolist

2. Buatlah sebuah file baru dengan nama index.html lalu copy script di bawah ini.



<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Todolist App</title> <!-- import bootstrap css --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> </head> <body> <div class="container mt-5"> <div class="row d-flex justify-content-center"> <div class="col-lg-8"> <h1 class="text-center">Todo List</h1> <a href="add.html" class="btn btn-primary btn-sm my-4"> Add New Task </a> <div id="todo-list"></div> </div> </div> </div> <!-- import bootstrap javascript --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script> <script> document.addEventListener('DOMContentLoaded', function(){ //mengambil data dari local storage const todos = JSON.parse(localStorage.getItem('todos')) || []; let list = '' //lakukan perulangan dari data todos //kita buat dalam bentuk card todos.forEach((todo, index) => { list += `<div class="card mb-4"> <div class="card-body"> <div> <h5>${todo.keterangan}</h5> <p>Due: ${todo.dueDate} | Status: ${todo.status}</p> </div> <div> <a href="edit.html?index=${index}" class="btn btn-secondary btn-sm">Edit</a> <button onclick="deleteTask(${index})" class="btn btn-danger btn-sm">Delete</button> </div> </div> </div> ` }); //tampilkan daftar todolist ke dalam id todo-list document.getElementById('todo-list').innerHTML = list }) //membuat fungsi delete function deleteTask(index){ //mengambil data dari local storage const todos = JSON.parse(localStorage.getItem('todos')) || []; //menghapus data todos.splice(index, 1) localStorage.setItem('todos', JSON.stringify(todos)) //reload halaman location.reload() } </script> </body> </html>


3. Buatlah sebuah file baru dengan nama add.html lalu copy script di bawah ini.



<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Add Todo List</title> <!-- import bootstrap css --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> </head> <body> <div class="container mt-5"> <div class="row d-flex justify-content-center"> <div class="col-lg-8"> <h1 class="text-center">Add New Task</h1> <div class="card"> <div class="card-body"> <form id="add-task-form"> <div class="mb-4"> <label for="">Keterangan</label> <textarea name="keterangan" id="keterangan" class="form-control" rows="5" required placeholder="Keterangan"></textarea> </div> <div class="mb-4"> <label for="">Due Date</label> <input type="date" class="form-control" id="dueDate" required> </div> <div class="mb-4"> <label for="">Status</label> <select name="status" id="status" class="form-control" required> <option value="Pending">Pending</option> <option value="Progress">Progress</option> <option value="Completed">Completed</option> </select> </div> <button type="submit" class="btn btn-primary">Add Task</button> </form> </div> </div> </div> </div> </div> <!-- import bootstrap js --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script> <script> //script ini bereaksi saat tombol submit diklik document.getElementById('add-task-form').addEventListener('submit', function(event){ //mencegah form direload event.preventDefault(); //menangkap data dari form yang diisi const keterangan = document.getElementById('keterangan').value; const dueDate = document.getElementById('dueDate').value; const status = document.getElementById('status').value; //membuat objek const todo = { keterangan, dueDate, status }; const todos = JSON.parse(localStorage.getItem('todos')) || []; //menyimpan data todos.push(todo); localStorage.setItem('todos', JSON.stringify(todos)); //kembali ke halaman index window.location.href = 'index.html' }) </script> </body> </html>


4. Buatlah file baru dengan nama edit.html lalu copy script di bawah ini.



<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Edit Todo List</title> <!-- import bootstrap css --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> </head> <body> <div class="container mt-5"> <div class="row d-flex justify-content-center"> <div class="col-lg-8"> <h1 class="text-center">Edit Task</h1> <div class="card"> <div class="card-body"> <form id="edit-task-form"> <div class="mb-4"> <label for="">Keterangan</label> <textarea name="keterangan" id="keterangan" class="form-control" rows="5" required placeholder="Keterangan"></textarea> </div> <div class="mb-4"> <label for="">Due Date</label> <input type="date" class="form-control" id="dueDate" required> </div> <div class="mb-4"> <label for="">Status</label> <select name="status" id="status" class="form-control" required> <option value="Pending">Pending</option> <option value="Progress">Progress</option> <option value="Completed">Completed</option> </select> </div> <button type="submit" class="btn btn-primary">Add Task</button> </form> </div> </div> </div> </div> </div> <!-- import bootstrap js --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script> <script> document.addEventListener('DOMContentLoaded', function(){ //mengambil parameter url const params = new URLSearchParams(window.location.search); const index = params.get('index'); //mengambil data berdasarkan index const todos = JSON.parse(localStorage.getItem('todos')) || []; const todo = todos[index]; //menampilkan data ke dalam form document.getElementById('keterangan').value = todo.keterangan; document.getElementById('dueDate').value = todo.dueDate; document.getElementById('status').value = todo.status; //script di bawah ini untuk menyimpan data document.getElementById('edit-task-form').addEventListener('submit', function(event){ //mencegah form direload event.preventDefault(); //mengambil data dari form const keterangan = document.getElementById('keterangan').value const dueDate = document.getElementById('dueDate').value; const status = document.getElementById('status').value; //membuat objek dan menyimpan data todos[index] = { keterangan, dueDate, status }; localStorage.setItem('todos', JSON.stringify(todos)); //kembali ke halaman index window.location.href = 'index.html' }) }) </script> </body> </html>


5. Hasil akhirnya jika dijalankan

Tampilan Akhir Aplikasi Todolist



Selamat! Anda telah berhasil membuat aplikasi To-Do List sederhana menggunakan JavaScript dan Local Storage. Aplikasi ini tidak hanya membantu Anda mengelola tugas-tugas harian dengan lebih baik, tetapi juga memberikan pemahaman yang lebih mendalam tentang bagaimana JavaScript dan Local Storage.

No comments

Jangan lupa kasih komentar ya!. Karena komentar kalian membantu kami menyediakan informasi yang lebih baik

Tidak boleh menyertakan link atau promosi produk saat berkomentar. Komentar tidak akan ditampilkan. Hubungi 081271449921(WA) untuk dapat menyertakan link dan promosi