곰돌이의 자취를 느낄 수 있는 todo list!
리스트를 추가할때마다 곰돌이가 발자국을 남기며 내려가는 투두리스트를 만들어보았다!
사실 원래 목표는 여러 리스트 박스를 추가할 수 있는 페이지를 만드는 것이었다.

하지만.. ㅠㅠ
새로 생성된 리스트가 기능을 하지 못했고.. 어떻게 구현해야할지 해결책을 찾지 못했다..
결국 새로 생성하기보다는 하나의 리스트에 만족하기로 하며 페이지를 마무리해보았다
-> 이것도 미래의 내가 구현해주겠지 ㅎ_ㅎ

//set the title of list
const addform = document.querySelector('.title-form');
addform.addEventListener('submit', function(e) {
    e.preventDefault();
    const title = addform.elements.title.value;
    const todoBox = document.querySelector('.todo-box'); 
    const todoCont = document.querySelector('.todo-cont');
    const colorBtn = document.querySelector('.col');
    addtitle(title);
    todoBox.classList.remove('init');
    todoCont.classList.remove('init');
    colorBtn.classList.remove('init');
    addform.elements.title.value = ''
})
const addtitle = (title) => {
    const titleInList = document.querySelector('p.goal');
    const newTitle = document.createElement('span');
    newTitle.append(title);
    titleInList.innerText = newTitle.innerText;
}
addtitle이라는 함수로, input값을 span안에 담아서 list안의 title의 텍스트로 교체해주었다..을 생략해야한다! classList에서 삭제할 아이를 알려주는 것이니까 그냥 class name만 입력하는 건가보다..? 
// creating lists
const listform = document.querySelector('.list-form');
listform.addEventListener('submit', function(e) {
     //next page로 가지 않게 멈추기 : stop default behavior
  	 e.preventDefault(); 
	 //입력 값을 todo로 선언
     const todo = listform.elements.todos.value;
     //addlist 실행
     addList(todo);
     //입력값 초기화
     listform.elements.todos.value = '';
});
const addList = (todo) => {
  	//li 안에 입력 값을 넣고, 이미 존재하는 ul에 집어넣기
    const newTodo = document.createElement('li');
    const todoLists = document.querySelector('ul.todo-lists');
    newTodo.append(todo);
    todoLists.appendChild(newTodo);
}
append와 appendChild의 차이
 
const addList = (todo) => {
    const newTodo = document.createElement('li');
    const todoLists = document.querySelector('ul.todo-lists');
    newTodo.append(todo);
    todoLists.appendChild(newTodo);
  
	//done and delete
    newTodo.addEventListener('click', ()=>{
        newTodo.classList.toggle('done')
    })
    newTodo.addEventListener('dblclick', ()=>{
        newTodo.classList.toggle('init')
    })
}
done(:밑줄 추가)과init(:display none) class를 부여했다.
//changing the colors
const paper = document.querySelector('.todo-box');
const btnY = document.querySelector('.yellow');
const btnB = document.querySelector('.blue');
const btnG = document.querySelector('.green');
btnY.addEventListener('click',() =>{
    paper.setAttribute("style", "background-color: #ffe268;");
    
}) 
btnB.addEventListener('click',() =>{
    paper.setAttribute("style", "background-color: #a7c5eb;");
}) 
btnG.addEventListener('click',() =>{
    paper.setAttribute("style", "background-color: #99bbad;");
}) 
//date in todos
const todosDate = document.querySelector('p.date');
function getTime () {
    const dayArr = ['SUN','MON','TUE','WED','THU','FRI','SAT']
    let crrDate = new Date();
    let month = crrDate.getMonth() + 1;
    let date = crrDate.getDate();
    let day = dayArr[crrDate.getDay()];
    todosDate.innerText = `${month <10? `0${month}` : month
                        }.${date<10? `0${date}` : date
                        }.${day}`;
}
getTime();
 -> 복습하는 느낌으로 색상 변경하는 기능을 추가하고, 자동으로 현재 날짜가 기록되도록 만들어보았다.
-> 이때 .style.backgroundColor로는 설정이 안 먹혔는데 이유를 모르겠다.
-> setAttribute / style / getComputedStyle 차이 찾아보기!

-> 가상 선택자를 처음써보았는데 이미지나 이모티콘을 추가할 수 있다는 것을 알게되었다! (nth-last-child로 발자국을 남기는 것 처럼 표현해보았다.)
-> 추가로! list marker는 포지션을 inside로 지정하지 않으면 영역에 포함되지 않으므로 주의하자!!