function deleteToDo(event){ }
delBtn.addEventListener("click", deleteToDo);
3-1. function deleteToDo 함수에 event.target
을 생성한다.
const btn = event.target;
event
만 실행된다면 버튼이 클릭된 것은 확인할 수 있지만,
어떤 버튼을 클릭했는 지 모르기 때문에target
를 추가해야한다.
3-2. 그리고 target
의 parentNode
로 타겟을 좁힌다.
const li = btn.parentNode;
4-1. toDoList를 가져와서 위에서 찾은 li
(child)를 삭제한다.
toDoList.removeChild(li);
5-1. toDo를 삭제하기 위해 filter
을 사용한다.
const cleanToDos = toDos.filter(); // (function)의 테스트를 통과하는 모든 toDos요소들을 모아 cleanToDos 배열로 반환
💡 filter
: filter() 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환한다.
5-2. 필터링을 할 function filterFn 함수를 생성하고 ('li'에 없는 id인 toDos) = (html li에서 지워진 toDos)를 체크하도록 한다.
function filterFn(toDo){ const cleanToDos = toDos.filter(function(todo){ return toDo.id !== li.id; // toDos(전체 요소)가 'li'의 id와 같지 않을 때 배열을 생성하라 }
이렇게 하면
toDo.id
는number
,li.id
는string
이라 cleanToDos 배열의 생성이 제대로 이루어지지 않는다.return toDo.id !== parseInt(li.id);
그렇기 때문에
parseInt
를 사용해li.id
를JSON
으로 교체해준다.
5-4. cleanToDos에서는 id
가 무사히 삭제되었지만 toDos에서는 아니므로 toDos를 교체한다.
toDos = cleanToDos;
5-5. 그리고 교체한 toDos를 저장한다.
saveToDos();