javascript

19. Momentum 만들기 7 - todolist 만들기3

으누아빠 2020. 6. 30. 12:24
반응형

3단계 삭제 버튼을 눌러 로컬스토리지에서 삭제 및 페이지에서 지우기

  1. 버튼 클릭시 화면에서 해당 리스트 삭제
  2. 로컬스토리지에서 데이터를 삭제

키워드1. filter()

  const fruits = ['apple', 'banana', 'orange'];
  let result = fruits.join();
  console.log(result); //결과값: apple,banana,orange

  result = fruits.join('@'); 
  console.log(result); //결과값: apple@banana@orange

전체코드

todo.js

'use strict';

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

const TODO_ITEMS = 'toDos';
let toDos = [];

function saveToDoItem(item) {
    const stringItem = JSON.stringify(item);
    localStorage.setItem(TODO_ITEMS, stringItem);
}

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

    displayToDoList(currentValue);
    toDoInput.value = '';
}

function deleteTodo(event) {
    const parent = event.target.parentNode;
    toDoList.removeChild(parent);

    const cleanTodos = toDos.filter(function (toDo) {
        return toDo.id !== parseInt(parent.id);
    });

    toDos = cleanTodos;

    saveToDoItem(toDos);
}

function displayToDoList(item) {
    const li = document.createElement('li');
    const delBtn = document.createElement('button');

    delBtn.innerText = '❌';
    delBtn.addEventListener('click', deleteTodo);

    const span = document.createElement('span');
    const newId = toDos.length + 1;

    span.innerText = item;
    li.appendChild(delBtn);
    li.appendChild(span);
    li.id = newId;
    toDoList.appendChild(li);

    const toDoObj = {
        text: item,
        id: newId
    };

    toDos.push(toDoObj);
    saveToDoItem(toDos);
}

function loadToDoList() {
    const loadToDoItems = localStorage.getItem(TODO_ITEMS);
    if (loadToDoItems !== null) {
        const parseItems = JSON.parse(loadToDoItems);

        parseItems.forEach(function (item) {
            displayToDoList(item.text);
        });
    }
}

function init() {
    loadToDoList();
    toDoForm.addEventListener('submit', handleSubmit);
}

init();

'javascript' 카테고리의 다른 글

21. [최종] Momentum 만들기 9 - 날짜 API 연결  (0) 2020.06.30
20. Momentum 만들기 8 - 배경이미지 랜덤출력  (0) 2020.06.30
18. Array APIs  (0) 2020.06.30
17. Momentum 만들기 6 - todolist 만들기2  (0) 2020.06.29
16. JSON  (0) 2020.06.29