본문 바로가기
JS/몰라JS

[javaScript] todoList(2)

by 몰라닉네임 2023. 6. 17.

todoList 기능

 

todo 내용추가 .

localStorage 에 추가

 

todo 내용삭제 (특정 항목 삭제 id를 이용해 삭제 )

localStorage 에 삭제 (특정 항목 삭제 id를 이용해 삭제 )

 

  • id 값 이용해 특정 내용 삭제 (id값 이용해 삭제 하려면 먼저 아래내용의 object를 만들어 id 값을 줘야 한다.)

toDos = toDos.filter((toDo) => toDo.id !== parseInt(li.id) ); //id는 int ,  li.id는 string  비교하기 위해 parseInt 이용

saveToDos();

//특정  todo 내용의 id값을 비교해 delete 한다.  그리고는 다시 그 내용들을 저장해준다.

 

 

  • 특정  id 를 이용하기 위해  Object 사용

function paintTodo(){

..(생략)..

li.id = newTodo.id;

span.innerText = newTodo.text;

...

}

 

★id 값을 활용하기 위해 Object 사용! 

function handleToDoSubmit() {

..(생략)..

const newTodoObj = {

 text : newTodo,

 id : Date.now(),

}

toDos.push(newTodoObj);-p

paintToDo(newTodoObj);

...

}

 

 

 

todo.js 완성

const toDoForm = document.getElementById("todo-form");
const toDoList = document.getElementById("todo-list");
//input(todolist ) 값을 받는,   toDoForm.querySelector("input");과 같다.
const toDoInput = document.querySelector("#todo-form input");

const TODOS_KEY = "todos";

let toDos = [];

function saveToDos(){
    localStorage.setItem(TODOS_KEY, JSON.stringify(toDos));
}

//삭제 event (특정 todoList 삭제)
function deleteToDo(event){
    //console.log(event.target.parentElment);
    const li = event.target.parentElement;
    li.remove();
    toDos = toDos.filter((toDo) => toDo.id !== parseInt(li.id)); //특정 항목을 id값을 비교해 delete 한다.
    saveToDos();
}


function paintToDo(newTodo){
    const li = document.createElement("li");
    li.id = newTodo.id;
    const span = document.createElement("span");
    span.innerText = newTodo.text;
    const button = document.createElement("button");
    button.innerText = "❌";
    button.addEventListener("click", deleteToDo)
    li.appendChild(span);
    li.appendChild(button);
    
    //console.log(li);
    toDoList.appendChild(li);
}


//
function handleToDoSubmit(event) {
    event.preventDefault();
    //console.log(toDoInput.value);

    const newTodo =  toDoInput.value; //input 값 제출하면 저장
    //submit 하면 사라지게 한다.
    toDoInput.value = "";
    const newTodoObj = {
        text : newTodo,
        id : Date.now(),
    }; //중복되는 값을 구별하기 위해 Object로 id를 랜덤으로 만들어준다. 
    toDos.push(newTodoObj); //Saving todos, array에 저장
    paintToDo(newTodoObj);
    saveToDos()
}

toDoForm.addEventListener("submit", handleToDoSubmit);

const savedToDos = localStorage.getItem(TODOS_KEY);
//console.log(savedTODos);

if (savedToDos !== null){
    const parsedToDos = JSON.parse(savedToDos);  //string을 다시 array로 반환
    //console.log(parsedToDos);
    toDos = parsedToDos; //local Storage 기존 값들에 추가된다. (이게 없으면 덮어쓰는거임 )
    parsedToDos.forEach(paintToDo) ;
}

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css"/>
    <title>Momentom</title>
</head>
<body>
    <h2 id="clock">00:00:00</h2>
    <form class="hidden" id="login-form">
        <input type="text" required maxlength="15" placeholder="what is your name?"/>
        <button>Log In</button>
    </form>
    <h1 class="hidden" id="greeting"></h1>
    <form id="todo-form">
        <input type="text" placeholder="Write a To Do and Press Enter" required />
    </form>
    <ul id="todo-list">
    </ul>
    <div id="quote">
        <span></span>
        <span></span>
    </div> 
    <script src="greeting.js"></script> <!-- import -->
    <script src="clock.js"></script>
    <script src="quotes.js"></script>
    <script src="background.js"></script>
    <script src="todo.js"></script>
</body>
</html>

 

참조 노마드 코더

'JS > 몰라JS' 카테고리의 다른 글

0729(토)  (0) 2023.07.29
[javaScipt] 날씨 API  (0) 2023.06.18
[javaScript] todoList(1)  (0) 2023.06.16
[javaScript] 랜덤명언 & 배경생성  (0) 2023.06.14
[javaScipt] 시계 만들기(clock)  (0) 2023.06.08