JavaScript/Vanilla JS

[๋ฐ”๋‹๋ผJS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ] Making a To Do List part Two

์ฝ”๋”ฉํ•˜๋Š” ๋ถ•์–ด 2021. 3. 3. 03:21
๋ฐ˜์‘ํ˜•

[์ถœ์ฒ˜-์œ ํŠœ๋ธŒ ๋…ธ๋งˆ๋“œ ์ฝ”๋” Nomad Coders]

https://youtu.be/JEbOaI_0phc

 

const toDoObj = {
        text: text,
        id: toDos.length + 1
    };
    toDos.push(toDoObj);

↑์ด๊ฒƒ์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค

 

const toDoForm = document.querySelector(".js-toDoForm"),
    toDoInput = toDoForm.querySelector("input"),
    toDoList = document.querySelector(".js-toDoList");

const TODOS_LS = 'toDos';

const toDos = [];

function paintToDo(text){
    const li = document.createElement("li");
    const delBtn = document.createElement("button");
    delBtn.innerText = "X";
    const span = document.createElement("span");
    span.innerText = text;
    li.appendChild(span);
    li.appendChild(delBtn);
    toDoList.appendChild(li);
    const toDoObj = {
        text: text,
        id: toDos.length + 1
    };
    toDos.push(toDoObj);
}

function handleSubmit(event){
    event.preventDefault();
    const currentValue = toDoInput.value;
    paintToDo(currentValue);
    toDoInput.value = "";
}

function loadToDos(){
    const loadedToDos = localStorage.getItem(TODOS_LS);
    if(loadedToDos !== null){
        
    } else {

    }
}

function init(){
    loadToDos();
    toDoForm.addEventListener("submit", handleSubmit);
}

init();

 

 

 

-<li>์— id ์ฃผ๊ธฐ

id๊ฐ€ ์žˆ์–ด์•ผ ๋‚˜์ค‘์— ์–ด๋–ค ๋ฆฌ์ŠคํŠธ๋ฅผ ์ง€์šธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค

function paintToDo(text){
    const li = document.createElement("li");
    const delBtn = document.createElement("button");
    const span = document.createElement("span");
    const newId = toDos.length + 1;
    delBtn.innerText = "X";
    span.innerText = text;
    li.appendChild(span);
    li.appendChild(delBtn);
    li.id = newId;
    toDoList.appendChild(li);
    const toDoObj = {
        text: text,
        id: newId
    };
    toDos.push(toDoObj);
}
const toDoForm = document.querySelector(".js-toDoForm"),
    toDoInput = toDoForm.querySelector("input"),
    toDoList = document.querySelector(".js-toDoList");

const TODOS_LS = 'toDos';

const toDos = [];

function paintToDo(text){
    const li = document.createElement("li");
    const delBtn = document.createElement("button");
    const span = document.createElement("span");
    const newId = toDos.length + 1;
    delBtn.innerText = "X";
    span.innerText = text;
    li.appendChild(span);
    li.appendChild(delBtn);
    li.id = newId;
    toDoList.appendChild(li);
    const toDoObj = {
        text: text,
        id: newId
    };
    toDos.push(toDoObj);
}

function handleSubmit(event){
    event.preventDefault();
    const currentValue = toDoInput.value;
    paintToDo(currentValue);
    toDoInput.value = "";
}

function loadToDos(){
    const loadedToDos = localStorage.getItem(TODOS_LS);
    if(loadedToDos !== null){
        
    } else {

    }
}

function init(){
    loadToDos();
    toDoForm.addEventListener("submit", handleSubmit);
}

init();

li์— id๊ฐ€ ์ƒ๊น€

 

 

-todo ์ €์žฅํ•˜๊ธฐ

function saveToDos(){
    localStorage.setItem(TODOS_LS, toDos);
}
function paintToDo(text){
    const li = document.createElement("li");
    const delBtn = document.createElement("button");
    const span = document.createElement("span");
    const newId = toDos.length + 1;
    delBtn.innerText = "X";
    span.innerText = text;
    li.appendChild(span);
    li.appendChild(delBtn);
    li.id = newId;
    toDoList.appendChild(li);
    const toDoObj = {
        text: text,
        id: newId
    };
    toDos.push(toDoObj);
    saveToDos();
}

โ˜…์ฃผ์˜ : ๋ฐ˜๋“œ์‹œ push๋ฅผ ํ•œ ํ›„์— ํ˜ธ์ถœํ•  ๊ฒƒ

 

const toDoForm = document.querySelector(".js-toDoForm"),
    toDoInput = toDoForm.querySelector("input"),
    toDoList = document.querySelector(".js-toDoList");

const TODOS_LS = 'toDos';

const toDos = [];

function saveToDos(){
    localStorage.setItem(TODOS_LS, toDos);
}

function paintToDo(text){
    const li = document.createElement("li");
    const delBtn = document.createElement("button");
    const span = document.createElement("span");
    const newId = toDos.length + 1;
    delBtn.innerText = "X";
    span.innerText = text;
    li.appendChild(span);
    li.appendChild(delBtn);
    li.id = newId;
    toDoList.appendChild(li);
    const toDoObj = {
        text: text,
        id: newId
    };
    toDos.push(toDoObj);
    saveToDos();
}

function handleSubmit(event){
    event.preventDefault();
    const currentValue = toDoInput.value;
    paintToDo(currentValue);
    toDoInput.value = "";
}

function loadToDos(){
    const loadedToDos = localStorage.getItem(TODOS_LS);
    if(loadedToDos !== null){
        
    } else {

    }
}

function init(){
    loadToDos();
    toDoForm.addEventListener("submit", handleSubmit);
}

init();

โ˜… Javascript๋Š” local storage์— ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ string์œผ๋กœ ์ €์žฅํ•˜๋ ค๊ณ  ํ•จ

 

 

 

-Object๋ฅผ String์œผ๋กœ ๋งŒ๋“ค๊ธฐ

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

JSON.stringify๋Š” Javascript Object๋ฅผ String์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค

 

โ˜… JSON = 'Javascript Object Notation'์˜ ์ค„์ž„๋ง

๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ Javascript๊ฐ€ ๊ทธ๊ฑธ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก Object๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค

 

 

 

 

-todo ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

function loadToDos(){
    const loadedToDos = localStorage.getItem(TODOS_LS);
    if(loadedToDos !== null){
        const parsedToDos = JSON.parse(loadedToDos);
        console.log(parsedToDos);
    }
}

parse๋ฅผ ํ•ด์ฃผ์—ˆ๋”๋‹ˆ Object๋กœ ๋ณ€ํ™˜๋˜์—ˆ๋‹ค

 

 

 

-local storage์—์„œ ๋ถˆ๋Ÿฌ์˜จ ๊ฒƒ์„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๊ธฐ

 

๋จผ์ € console์ฐฝ์— ์ถœ๋ ฅํ•ด๋ณธ๋‹ค

function loadToDos(){
    const loadedToDos = localStorage.getItem(TODOS_LS);
    if(loadedToDos !== null){
        const parsedToDos = JSON.parse(loadedToDos);
        parsedToDos.forEach(function(toDo) {
        console.log(toDo.text);
        });
    }
}

 

↓์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ข€ ๋” ๊น”๋”ํ•˜๋‹ค

function something(toDo) {
    console.log(toDo.text);
}
function loadToDos(){
    const loadedToDos = localStorage.getItem(TODOS_LS);
    if(loadedToDos !== null){
        const parsedToDos = JSON.parse(loadedToDos);
        parsedToDos.forEach(something);
    }
}

 

 

์ด์ œ ํ™”๋ฉด์— ์ถœ๋ ฅํ•ด๋ณธ๋‹ค

function loadToDos(){
    const loadedToDos = localStorage.getItem(TODOS_LS);
    if(loadedToDos !== null){
        const parsedToDos = JSON.parse(loadedToDos);
        parsedToDos.forEach(function(toDo) {
            paintToDo(toDo.text);
        });
    }
}

 

๋ฐ˜์‘ํ˜•