ozcoding_기록
Todo List 만들기
m-sun
2024. 7. 15. 23:55
오늘은 todo list를 만들어보았다.
여태까지 배운 내용이 들어간 과제다.
자바스크립트 코드
const todoList = document.getElementById('todo-list')
const todoForm = document.getElementById('todo-form')
let todoArr = [];
// 오늘 날짜 추가
const app = document.querySelector('.app')
const date = document.createElement('div')
let today = new Date();
const year = today.getFullYear();
const month = today.getMonth()+1;
const dt = today.getDate();
date.textContent = `${year}.${month}.${dt}`;
app.append(date);
// 로컬 스토리지
function saveTodos() {
const todoString = JSON.stringify(todoArr)
localStorage.setItem("myTodos", todoString)
}
function loadTodos() {
const myTodos = localStorage.getItem("myTodos")
if(myTodos !== null) {
todoArr = JSON.parse(myTodos)
displayTodos()
}
}
loadTodos()
// 할일 삭제하기
function handleTodoDelBtnClick(clickedId) {
todoArr = todoArr.filter(function(aTodo){
return aTodo.todoId !== clickedId
})
displayTodos()
saveTodos()
}
// 할일 수정하기
function handleTodoItemClick(clickedId) {
todoArr = todoArr.map(function(aTodo){
if(aTodo.todoId === clickedId){
return {
...aTodo, todoDone: !aTodo.todoDone
}
} else {
return aTodo
}
})
displayTodos()
saveTodos()
}
// 할일 보여주기
function displayTodos() {
todoList.innerHTML = ""
todoArr.forEach(function(aTodo){
const todoItem = document.createElement('li')
const todoDelBtn = document.createElement('span')
todoDelBtn.textContent = 'x'
todoItem.textContent = aTodo.todoText
todoItem.title = "클릭하면 완료됨"
if(aTodo.todoDone) {
todoItem.classList.add("done")
} else {
todoItem.classList.add("yet")
}
todoDelBtn.title = "클릭하면 삭제됨"
todoItem.addEventListener("click", function(){
handleTodoItemClick(aTodo.todoId)
})
todoDelBtn.addEventListener("click", function() {
handleTodoDelBtnClick(aTodo.todoId)
})
todoItem.appendChild(todoDelBtn)
todoList.appendChild(todoItem)
})
}
// 할일 추가하기
todoForm.addEventListener("submit", function(e){
e.preventDefault()
if(todoForm.todo.value.trim() === "") {
swal('', "할 일을 적어주세요!!", 'warning')
return // 반환해야 화면에 리스트 안 생김
}
const toBeAdded = {
todoText: todoForm.todo.value,
todoId: new Date().getTime(),
todoDone: false
}
todoForm.todo.value = ""
todoArr.push(toBeAdded)
displayTodos()
saveTodos()
})
🐣결과물🐥
강의 영상을 많이 참고해서 만든거라서 디자인만 열심히 꾸미고 자바스크립트 기능 구현은 간단한 것만 조금 더 추가한거라 이번껀 아쉬웠다.
오늘 컨디션이 그다지 좋진 않았어서 머리가 잘 안돌아갔다 ㅠ
그래서!! 내일은 이 과제를 바탕으로 다시 한 번 todo list를 만들어보려고 한다 !_!
하루 만에 다 만들 수 있을지 모르겠지만 할 수 있는 곳까지 최선을 다해서 만들고 블로그에 올려보겠다!