todo

willy·2021년 12월 6일
0

자 이번엔 리스트를 만들어보자.

먼저 html에 todo-form , todo-list를 만들었다.

todo-form은 form 태그를 만들고 id 값으로 todo-form을 만들어둔다.
그리고 안쪽을 input required type="text"를 입력하고,
todo-list는 아래와 같이 만들어둔다.

<ul id="todo-list"></ul>

그리고 todo.js를 만든 후 리스트 작성에 들어가보자

<script>
const toDoForm = document.querySelector("#todo-form");
const toDoInput = toDoForm.querySelector("input");
const toDoList = document.querySelector("#todo-list");
</script>

그 다음 펑션을 제작해보자.
이 기능은 html에 자바스크립트가 직접 element를 추가해주며 Input 값에 입력한 것을 리스트에 넣을 수 있다.

<script>
function paintToDo() {
	const list = document.createElement("li");
    const span = document.createElement("span");
}

</script>

아래는 완성본이다

<script>
const toDoForm = document.querySelector("#todo-form");
const toDoInput = toDoForm.querySelector("input");
const toDoList = document.querySelector("#todo-list");

let toDos = [];
const TODOS_KEY = "toDos"


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

function deleteToDo(event) {
    const li = event.target.parentElement;
    li.remove();
}

function paintToDo(newToDo) {
    const list = document.createElement("li");
    const span = document.createElement("span");
    span.innerText = newToDo;
    const button = document.createElement("button");
    button.innerText = "❌";
    button.addEventListener("click", deleteToDo)
    list.appendChild(span);
    list.appendChild(button);
    toDoList.appendChild(list);
}

function handleToDoSubmit(event) {
    event.preventDefault();
    const newToDo = toDoInput.value;
    toDoInput.value = "";
    toDos.push(newToDo)
    paintToDo(newToDo);
    saveToDos();
}

toDoForm.addEventListener("submit", handleToDoSubmit );

function Hey(item){
    console.log("hey~!", item);
} 


const storageToDos = localStorage.getItem(TODOS_KEY);
console.log(storageToDos);
if(storageToDos){
    const parseToDo = JSON.parse(storageToDos);
    toDos = parseToDo;
    parseToDo.forEach(paintToDo);
}
</script>
profile
같은 문제에 헤매지 않기 위해 기록합니다.

0개의 댓글