๊ตฌํํ ๊ธฐ๋ฅ
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;
}
});
}
๋ฐฐ๊ฒฝ ์ง์ ๊ทธ๋ ธ์ด์ ใ ใ ๊ท์๋ฏธ ๋ฉ๋ชจ์ฅ ์์ฑ^ใ ^/