
๊ตฌํํ ๊ธฐ๋ฅ
1. ์ ๋ชฉ, ๋ฉ๋ชจ ์ ๋ ฅ๋ฐ์ผ๋ฉด ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๊ธฐ
2. ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ์ ์ฅ๋ ๋ฉ๋ชจ๋ค ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ธฐ
3. ์ญ์  ๋ฒํผ ๋๋ฅด๋ฉด ํด๋น ๋ฉ๋ชจ ์ญ์ 
4. ์์  ๋ฒํผ ๋๋ฅด๋ฉด ํด๋น ๋ฉ๋ชจ ์์ ๊ฐ๋ฅ
const main = document.querySelector('.main');
// ๋ก์ปฌ์คํ ๋ฆฌ์ง์ memos๋ผ๋ ํค๊ฐ ์์ผ๋ฉด ํค๋ฅผ ์์ฑํด์ค
let memos = JSON.parse(localStorage.getItem('memos'));
memos = memos ?? [];
memoBtn.addEventListener('click', function () {
  let newMemo = {};
  let memoTitle = main.querySelector('.memo-title').value;
  let memoContent = main.querySelector('.memo-content').value;
  
  // id ๊ฐ์ด ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ์๋ค๋ฉด ํค๋ฅผ ์์ฑํ๊ณ  0๋ถํฐ id ์ค์ 
  let id = JSON.parse(localStorage.getItem('id'));
  id = id ?? 0;
  
  // newMemo ๊ฐ์ฒด์ id, ์ ๋ชฉ, ๋ด์ฉ, ๋ ์ง ์ ์ฅ
  newMemo.id = id;
  newMemo.title = memoTitle;
  newMemo.content = memoContent;
  newMemo.date = `${now.getFullYear()}.${now.getMonth() + 1}.${now.getDate()}`;
  memos.push(newMemo);
  // ๋ก์ปฌ์คํ ๋ฆฌ์ง์ memos ํค๊ฐ์ผ๋ก ์ ์ฅํ๊ธฐ
  // ๋ก์ปฌ์คํ ๋ฆฌ์ง์ id ์ ์ฅํ๊ธฐ
  localStorage.setItem('memos', JSON.stringify(memos));
  localStorage.setItem('id', JSON.stringify(++id));
  
  // setMemo() : 2๋ฒ์์ ๋ง๋ค ๋ฉ๋ชจ๋ค ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ ํจ์
  setMemo();
  // ์
๋ ฅ์ฐฝ ๋น์ฐ๊ธฐ
  main.querySelector('.memo-title').value = null;
  main.querySelector('.memo-content').value = null;
});
function setMemo() {
  const memo_list = main.querySelector('.memo-list');
  // ๊ธฐ์กด์ ๋ฉ๋ชจ ์ ๊ฑฐ
  while (memo_list.firstChild) {
    memo_list.firstChild.remove();
  }
  // ๋ก์ปฌ์คํ ๋ฆฌ์ง์์ ๋ฉ๋ชจ ๊ฐ์ ธ์์ ์ต์ ์์ผ๋ก ์ ๋ ฌ
  for (let i = memos.length - 1; i >= 0; i--) {
    // article
    let article = document.createElement('article');
    article.setAttribute('data-id', memos[i].id);
    
    // h2 : title
    let title = document.createElement('h2');
    title.textContent = memos[i].title;
    
    // span : date
    let data = document.createElement('span');
    data.textContent = memos[i].date;
    
    // p : content
    let content = document.createElement('p');
    content.textContent = memos[i].content;
    
    // button : delteBtn
    let deleteBtn = document.createElement('button');
    deleteBtn.textContent = '์ญ์ ';
    // 3๋ฒ์์ ๊ตฌํํ  ํด๋น๋ฉ๋ชจ ์ญ์  ํจ์ setEditBtn() ๋ฑ๋กํด์ค
    deleteBtn.addEventListener('click', setDeleteBtn, false);
    
    // button : edit
    let editBtn = document.createElement('button');
    editBtn.textContent = '์์ ';
    // 4๋ฒ์์ ๊ตฌํํ  ํด๋น๋ฉ๋ชจ ์ญ์  ํจ์ setEditBtn() ๋ฑ๋กํด์ค
    editBtn.addEventListener('click', setEditBtn, false);
    
    article.append(title, data, content, editBtn, deleteBtn);
    memo_list.append(article);
  }
}
// ๋ฉ๋ชจ ์ญ์  ๋ฒํผ ๋๋ฅด๋ฉด ์คํ๋๋ ํจ์
function setDeleteBtn(e) {
  memos.forEach((a, i) => {
    // memos ๋ฐฐ์ด์ id๋ฅผ ๋๋ฉด์ ํด๋ฆญ๋ ๊ฒ์ id์ ๋น๊ต
    if (a.id == e.target.parentNode.dataset.id) {
      // ํด๋ฆญ๋ ๋ฉ๋ชจ ๋ฐฐ์ด์์ ์๋ฅด๊ธฐ
      memos.splice(i, 1);
      // ์๋ฅธ ๋ฉ๋ชจ ๋ฐฐ์ด ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ์ ์ฅ
      localStorage.setItem('memo', JSON.stringify(memos));
      // ์๋ก ์ ์ฅ๋ ๋ฉ๋ชจ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ธฐ
      setMemo();
      return;
    }
  });
}
// ๋ฉ๋ชจ ์์  ๋ฒํผ ๋๋ฅด๋ฉด ์คํ๋๋ ํจ์
function setEditBtn(e) {
  memos.forEach((a, i) => {
    if (a.id == e.target.parentNode.dataset.id) {
      // ํด๋ฆญ๋ ๋ฉ๋ชจ์ ์ ๋ชฉ, ๋ด์ฉ ๋ฉ๋ชจ์ฅ ์ฐ๋ ๊ณณ์ ๋ํ๋
      main.querySelector('.memo-title').value = a.title;
      main.querySelector('.memo-content').value = a.content;
      // ํด๋ฆญ๋ ๋ฉ๋ชจ ๋ฐฐ์ด์์ ์๋ฅด๊ธฐ
      memos.splice(i, 1);
      // ์๋ฅธ ๋ฉ๋ชจ ๋ฐฐ์ด ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ์ ์ฅ
      localStorage.setItem('memo', JSON.stringify(memos));
      // ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ธฐ
      setMemo();
      return;
    }
  });
}



๋ฐฐ๊ฒฝ ์ง์  ๊ทธ๋ ธ์ด์ ใ ใ  ๊ท์๋ฏธ ๋ฉ๋ชจ์ฅ ์์ฑ^ใ ^/