
수업 중에 진행한 TO-DO 실습이다.
새로운 아이템 객체 생성
prepend() : 선택한 요소의 자식 요소 앞에 추가 <-> append()
unshift() : 배열의 맨 앞에 값을 추가 <-> shift()
function createNewTodo() {
// 새로운 아이템 객체 생성
const item = {
id: new Date().getTime(), // 유니크한 값 id로 주기 위함
text: "",
complete: false
};
// 배열의 처음에 새로운 아이템을 추가
todos.unshift(item);
// 요소 생성하기
const {itemEl, inputEl} = createToDoElement(item);
list.prepend(itemEl);
saveToLocalStorage();
}
actionsEl.append(editBtnEl);
actionsEl.append(removeBtnEl);
itemEl.append(checkboxEl);
itemEl.append(inputEl);
itemEl.append(actionsEl);
localStorage에 data 저장하고 가져오기. 데이터 변환 필요
// localStorage에서 data 가져와서 객체 생성하기
function displayTodos() {
// localStorage에서 todos 데이터 가져오기
loadFromLocalStorage();
for(let i=0; i<todos.length; i++) {
const item = todos[i];
// List Item 요소 생성
const { itemEl } = createToDoElement(item);
// List Div 안에 추가
list.append(itemEl);
}
}
displayTodos();
// localStorage에 저장
function saveToLocalStorage() {
const data = JSON.stringify(todos); // string으로 변환
localStorage.setItem('my_todos', data);
}
// localStorage에서 data 가져옴
function loadFromLocalStorage() {
const data = localStorage.getItem('my_todos');
if(data) {
todos = JSON.parse(data); // 데이터를 타입에 맞게 변환
}
}