반응형
[출처-유튜브 노마드 코더 Nomad Coders]
-HTML에서 지우기
function deleteToDo(event){
console.log(event.target);
}
delBtn.addEventListener("click", deleteToDo);
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";
delBtn.addEventListener("click", deleteToDo);
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();
}
부모 요소를 찾기 위해서 console.log를 console.dir로 변경한다
function deleteToDo(event){
console.dir(event.target);
}
부모 요소(parentNode)를 찾았으면 코드에 추가한다
function deleteToDo(event){
console.log(event.target.parentNode);
}
이제 다시 코드를 쓴다
function deleteToDo(event){
const btn = event.target;
const li = btn.parentNode;
toDoList.removeChild(li);
}
-local storage에서도 지우기
function deleteToDo(event){
const btn = event.target;
const li = btn.parentNode;
toDoList.removeChild(li);
const cleanToDos = toDos.filter(function(toDo){
return toDo.id !== parseInt(li.id);
});
console.log(cleanToDos);
}
const로 선언한 것을 let으로 선언한다
let toDos = [];
function deleteToDo(event){
const btn = event.target;
const li = btn.parentNode;
toDoList.removeChild(li);
const cleanToDos = toDos.filter(function(toDo){
return toDo.id !== parseInt(li.id);
});
toDos = cleanToDos;
saveToDos();
}
<완성본>
const toDoForm = document.querySelector(".js-toDoForm"),
toDoInput = toDoForm.querySelector("input"),
toDoList = document.querySelector(".js-toDoList");
const TODOS_LS = 'toDos';
let toDos = [];
function deleteToDo(event){
const btn = event.target;
const li = btn.parentNode;
toDoList.removeChild(li);
const cleanToDos = toDos.filter(function(toDo){
return toDo.id !== parseInt(li.id);
});
toDos = cleanToDos;
saveToDos();
}
function saveToDos(){
localStorage.setItem(TODOS_LS, JSON.stringify(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";
delBtn.addEventListener("click", deleteToDo);
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){
const parsedToDos = JSON.parse(loadedToDos);
parsedToDos.forEach(function(toDo) {
paintToDo(toDo.text);
});
}
}
function init(){
loadToDos();
toDoForm.addEventListener("submit", handleSubmit);
}
init();
★ filter과 forEach를 잘 기억 할 것!!!
반응형
'JavaScript > Vanilla JS' 카테고리의 다른 글
[바닐라JS로 크롬 앱 만들기] Getting the Weather part One Geolocation (0) | 2021.03.03 |
---|---|
[바닐라JS로 크롬 앱 만들기] Image Background (0) | 2021.03.03 |
[바닐라JS로 크롬 앱 만들기] Making a To Do List part Two (0) | 2021.03.03 |
[바닐라JS로 크롬 앱 만들기] Making a To Do List part One (0) | 2021.02.26 |
[바닐라JS로 크롬 앱 만들기] Saving the User Name part Two (0) | 2021.02.26 |
댓글