Cute Blinking Unicorn

서버/JSP

ToDo리스트 앱

민밥통 2023. 11. 28. 14:30
<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
    <script>
    function addItem() {
    	  // ul 요소 가져옴
    	  let list = document.getElementById('todolist');
    	  // 입력값을 읽어옴.
    	  let todo = document.getElementById('item');
    	  // 새로운 li 요소를 생성
    	  let listitem = document.createElement('li');
    	  // li 요소에 들어갈 닫기 버튼 생성
    	  let xbtn = document.createElement('button');

    	  listitem.className = 'd-flex list-group-item list-group-item-action list-group-item-warning';

    	  xbtn.className = 'btn-close  ms-auto';
    	  
    	  // close 버튼에 이벤트 처리
    	  xbtn.onclick = function(e) {
    	    // 이벤트가 발생한 li 요소를 구해서 ul 요소에서 제거
    	    let pnode = e.target.parentNode;
    	    list.removeChild(pnode);
    	  }
    	  // li 요소 구성
    	  listitem.innerText = `${todoCount}. ${todo.value}`;
    	  listitem.appendChild(xbtn);
    	  
    	  // ul 요소에 li 요소 추가
    	  list.appendChild(listitem);

    	  // 입력칸 비우기 및 포커스 이동
    	  todo.value = '';
    	  todo.focus();
    	  
    	  todoCount++;
    	}
    </script>
    <title>My ToDo App</title>    
  </head>
  
  <body>
    <div class="container bg-warning shadow mx-auto mt-5 p-5 w-75">
      <h2>My ToDo App</h2>
      <hr>
      <div class="input-group">
        <input id="item" class="form-control" type="text" placeholder="할일을 입력하세요..">
        <button type="button" class="btn btn-primary" onclick="addItem()">할일 추가</button>
      </div>
      <hr>
      <ul id="todolist" class="list-group"></ul>
    </div>
  </body>

</html>

총 개수와 번호 추가

1,  목록 번호 (ex1번 학교가기)
2. 목록 별 날짜, 시간출력
3. 전체 목록 개수: (예) 할이 5개
(삭제 시 개수 감소함)
innerhtml

<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
    <script>
    let todoCount = 1; // 카운트
    let todoCounts = 0;
 //할 일 개수 증가 완료
// document.getElementById("input-sum").innerHTML = `${todoCounts}`;
 
 function updateTotalCount() {
    document.getElementById("input-sum").innerText = `전체 목록 개수: 할일 ${todoCounts}개`;
  }
  
  function addItem() {
    // ul 요소 가져옴
    let list = document.getElementById('todolist');
    // 입력값을 읽어옴.
    let todo = document.getElementById('item');
    // 새로운 li 요소를 생성
    let listitem = document.createElement('li');
    // li 요소에 들어갈 닫기 버튼 생성
    let xbtn = document.createElement('button');


    listitem.className = 'd-flex list-group-item list-group-item-action list-group-item-warning';
    
    xbtn.className = 'btn-close ms-auto';
   
    // close 버튼에 이벤트 처리
    xbtn.onclick = function(e) {
		
      // 이벤트가 발생한 li 요소를 구해서 ul 요소에서 제거
      todoCounts--;
      let pnode = e.target.parentNode;
      list.removeChild(pnode);
      updateTotalCount(); // 전체 목록 개수 업데이트
    }

    // li 요소 구성
    listitem.innerText = `${todoCount}. ${todo.value}` // Include the count
    listitem.appendChild(xbtn);
    

    // ul 요소에 li 요소 추가
    list.appendChild(listitem);
 	todoCount++;
 	todoCounts++;
 
 	 updateTotalCount(); // 전체 목록 개수 업데이트
  

    // 입력칸 비우기 및 포커스 이동
    todo.value = '';
    todo.focus();

    }
    </script>
    <title>My ToDo App</title>    
  </head>
  
  <body>
    <div class="container bg-warning shadow mx-auto mt-5 p-5 w-75">
      <h2>My ToDo App</h2>
      <!-- 할일 개수 옆에 숫자 추가 -->
      <span id="input-sum"> </span>
      <hr>
      <div class="input-group">
        <input id="item" class="form-control" type="text" placeholder="할일을 입력하세요..">
        <button type="button" class="btn btn-primary" onclick="addItem()">할일 추가</button>
      </div>
      <hr>
      <ul id="todolist" class="list-group"></ul>
    </div>
  </body>

</html>

'서버 > JSP' 카테고리의 다른 글

MVC패턴  (1) 2023.12.05
액션 종합 예제: 계산기 구현 jsp, java Bean, Html 세가지로 활용  (0) 2023.11.30
회원가입 form  (0) 2023.11.28
html 수업  (0) 2023.11.28
jsp로 활용한 코딩  (0) 2023.11.23