study:\\[Web] 로컬 환경에 저장되는 투두리스트 페이지 만들기
오늘 할 일을 추가하거나 지우고,
이 모든 내용을 로컬 환경에 저장할 수 있는
투두리스트 페이지를 만들어보자
1. 틀 제작
<html>
<head>
<link rel="stylesheet" href="mystyle.css">
</head>
<body>
<h2>To-Do</h2>
<div class="div_text">
<button class= "w-btn" onclick="save_tododo()">Save</button>
<input id="task" placeholder="Task">
<input id="priority" placeholder="우선순위">
<button class="w-btn" onclick="add_row()">Add</button>
<button class="w-btn" onclick="del_row()">Del</button>
<br><br>
<div class="table-container">
<table id = "tb1">
<tr>
<th>Task</th>
<th>우선순위</th>
</tr>
</table>
</div>
</div>
</body>
</html>
- stylesheet에는 따로 제작한 CSS 파일이 들어있다
- <h2> To-Do </h2> 헤드 맨 위에 만들어주기
- 좌측 Save 버튼, 가운데 input 2개 (Task, 우선순위)
- 우측 Add, Del 버튼
- table input에 맞게 만들어줌
다음으로 할 일
1. input(Task, 우선순위)에 내용 입력 후 Add 클릭하면 테이블에 입력되는 기능 구현하기
2. 이어서 Del 클릭하면 테이블 내용 지워지는 기능 구현하기
3. Save 클릭시 현재 테이블에 입력된 내용 로컬 환경에 저장하기
* 새로고침해도 이전 내용 남아있도록
이제 javascript 코드를 활용해보자
2. 기능 구현
<script>
var tododo = [];
var t, pr;
function add_row() {
t = document.getElementById("task").value;
pr = document.getElementById("priority").value;
a = { task: t, priority: pr };
tododo.push(a);
display_tododo();
}
function del_row() {
tododo.pop();
display_tododo();
}
function display_tododo() {
document.getElementById("tb1").innerHTML = "<tr> <th>Task</th> <th>우선순위</th> </tr>";
for(var i = 0; i < tododo.length; i++) {
document.getElementById("tb1").insertAdjacentHTML('beforeend', "<tr> <td>" + tododo[i].task + "</td> <td>" + tododo[i].priority + "</td></tr>");
}
}
</script>
- var: 변수 선언하자
- tododo 할일 목록 담는 부분
- t, pr은 task와 우선순위를 저장하는 부분
- function: 함수 선언하자
- add_row(): html 입력필드에서 t, pr 내용을 읽어온 후 -> 그 값을 a라는 객체로 만들어서 tododo 배열에 추가
- del_row(): tododo 배열에 있는 내용 하나씩 제거함 (최근순)
- display_tododo: tododo 배열에 있는 모든 내용들 화면에 출력하는 디스플레이 부분임 Loop를 사용했음
function save_tododo() {
localStorage.setItem("todobook", JSON.stringify(tododo));
}
function load_tododo() {
var t = localStorage.getItem("todobook");
if(t == null) {
tododo = [ ];
} else {
tododo = JSON.parse(t);
}
display_tododo();
}
window.addEventListener("load", load_tododo);
- Save: tododo 배열을 json 문자열로 변환하고, localStorage에 todobook이라는 키로 저장함
- JSON <-> JavaScript 객체 상호 변환
- load: local 환경서 todobook에 저장된거 불러옴
- 저장 안되어 있으면 빈 배열로 초기화
- 이전에 저장해놓았다면 json문자열을 javascript 객체로 변환후 tododo 배열에 불러옴
- window.addEventListener: 이 구문은 웹페이지가 로드될 때 이 함수 자동으로 실행하도록 설정함
이제 여기까지 했으면 사실상 중요한 기능은 다 구현했다
css 활용해서 디자인하면 되는데
다 리뷰하면 길어지니 몇가지만
3. CSS
.w-btn {
position: relative;
border: none;
display: inline-block;
border-radius: 15px;
font-family: sans-serif;
box-shadow: 0px 0px 6px #ffffff;
font-weight: 600;
transition: 0.25s;
background-color: #ffffff;
color: gray;
padding: 5px 15px;
}
.w-btn:hover {
letter-spacing: 1px;
transform: scale(1.1);
cursor: pointer;
}
.w-btn:active {
transform: scale(1.5);
}
- w-btn ... 하얀색 버튼이다 이건 다른 사이트에서 많이 참고한 코드인데, 마우스 호버 액션이 있음
그 외 테이블을 그레이톤 + 세리프 글씨체로 한 거 등등 있다
완성~
'study' 카테고리의 다른 글
스팀 게임 빌드 메모 (0) | 2024.01.28 |
---|