<header class="head">
<p class="title en">To Do List</p>
<button class="clear en" onclick="clearDiv()">Clear</button>
</header>
<div class="inner">
<div class="todo-wrap">
<input type="text" id="todo" class="ipBox en" placeholder="New Memo"
onfocus="this.placeholder=''" onblur="this.placeholder='New Memo'">
<button id="summit" class="ipBox en" onclick="addTodo()">Enter</button>
</div>
<ul id="list-box"></ul>
</div>
placeholder=""
: input์ ์์ ํ
์คํธ ๋ณด์ฌ์ค ์ ์๋ค.onfocus="this.placeholder=''"
: input์ ํฌ์ปค์ค ๋ฌ์๋ this.placeholder=''
์ฆ ๋น ์นธ์ผ๋ก ๋ง๋ค์ด ์ฃผ๋๊ฒ์ด๋ค. onblur="this.placeholder='New Memo'"
: input์ ํฌ์ปค์ค๊ฐ ์์๋ฌ์๋ ๋ณด์ฌ์ฃผ๋ ํ
์คํธ๋ฅผ ์ค์ ํ ์ ์๋ค.// button onclick ์ด๋ฒคํธ ๋ฐ์์
function addTodo(){
const todo = document.getElementById('todo');
const listBox = document.getElementById('list-box');
// input์ด ๊ณต๋ฐฑ์ผ๋ ๊ฒฝ๊ณ ์ฐฝ ๋์ฐ๊ธฐ
if(todo.value == ''){
alert('ํ ์ผ์ ๋ฑ๋กํด์ฃผ์ธ์.');
}
// ๊ณต๋ฐฑ๋์ด ์๋๋ ์๋์ html ์์๋ฅผ listBox ๋ค๋ก ์ฝ์
else{
let list = `<div id="appendDiv" class="div">
<div class="inputCover">
<input type="checkbox" id="checkBox" class="checked">
<p class="text">${todo.value}</p>
</div>
<button class="delete en">Delete</button>
</div>`;
// list ์ถ๊ฐ
listBox.insertAdjacentHTML('beforeend', list);
}
};
ul์์ ์ฝ์
๋ html์์์๋ checkbox ์ delete๋ฒํผ์ด ์๊ธฐ๋๋ฌธ์ ๊ทธ ๊ธฐ๋ฅ์ ๋ง๋ค์ด์ค๋ค.
์ฌ๊ธฐ์ ์ฃผ์ ํ ๊ฒ์ ์์ฑ๋๋ html์์ == list ๊ฐ ํ๊ฐ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ for ๋ฐ๋ณต๋ฌธ์ ํตํด์
์์ฑ๋ list์ ๊ธธ์ด๋งํผ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๋ถ์ฐฉ์์ผ์ค์ผ ๊ธฐ๋ฅ์ด ์ ์์ ์ผ๋ก ์๋ํ๋ค.
// ์ฒดํฌ๋ฐ์ค
let checked = document.querySelectorAll('.checked');
for(let i = 0; i < checked.length; i++){
checked[i].addEventListener('change', (event) =>{
let text = document.querySelectorAll('.text')[i];
if(event.currentTarget.checked){
text.style.textDecoration = 'line-through';
text.style.color = '#7c7c7c';
}
else{
text.style.textDecoration = 'none';
text.style.color = '#000'
}
});
};
// ์ญ์ ๊ธฐ๋ฅ
let del = document.querySelectorAll('.delete');
for(let i = 0; i<del.length; i++){
del[i].addEventListener('click', listDel);
}
todo.value = null; //input๋ด์ฉ ๋ฆฌ์
ํ๊ธฐ
};
// ์ญ์ ๋ฒํผ ๊ธฐ๋ฅ
function listDel(e){
//ํด๋ฆญํ ์์์ ๋ถ๋ชจ์์๋ฅผ ์ฐพ์ ์ญ์
let target = e.target.parentNode;
target.remove();
};
// clear ๋ฒํผ ๊ธฐ๋ฅ
function clearDiv(){
let a = document.getElementById('list-box');
if(a !== null){
a.innerHTML = '';
}
};