[JavaScript] 2021.01.20. DAY_60 JQuery를 이용하여 태그를 동적으로 추가하기, empty()사용

2021. 1. 21. 09:32Web_Front-end/JavaScript

 

※ JQuery를 이용해서, Node를 동적으로 작성해보자

직장인이 선호하는 점심메뉴를 
사용자에게 입력받고
버튼 3가지를 생성한다
1. 추가버튼 
 - 추가버튼을 누르면 번호가 없는 목록 (ul)태그에 입력값을 추가시킨다
 - 다음값의 입력을 위해 입력창은 버튼을 누르면 초기화된다
2. 테이블버튼
 - 테이블버튼을 누르면 추가한 목록들이 하나의 열로 보여진다
3. 초기화버튼
 - 보여지는 모든 목록,테이블을 지우고 사용자 입력값도 초기화시킨다
empty() 함수를 사용할 것 

empty() ==> 자식의 내용을 삭제하는 함수

예를들어 아래같은 태그가 있다면 $("#test").empty(); 를 적용하면
ul 태그 하위에 있는 내용이 삭제된다

<ul id="test">

</ul>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
th, td{border: 1px solid #333; padding-left: 10px; padding-right: 10px}
</style>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script type="text/javascript">

$(function() {
	
	let food_list = []; //점심메뉴를 담은 배열생성
	let lunchMenu = ""; //점심메뉴-사용자입력값 담을 변수
	
	function listView(){//listView함수를 만들어, 버튼을 클릭할때 실행할 동작을 작성
		$("#menu").empty();
		for(m of food_list){//배열의 크기만큼 반복
			let li = $("<li></li>").text(m);//li태그를 생성+배열의값을 태그의값에 넣는다
			$("#menu").append(li);//ul(id=menu)에 넣어준다
		}
	}
	
	function tableView(){//tableView함수를 만들어, 버튼을 클릭할때 실행할 동작을 작성
		$("#thead").empty();
		$("#tbody").empty();
	
		$("#thead").append($("<tr></tr>").append($("<th></th>").text("점심메뉴")));
		for(m of food_list){//배열의 크기만큼 반복
			let tr = $("<tr></tr>");
			let td = $("<td></td>").text(m);
			tr.append(td);
			$("#tbody").append(tr);
		}
	}
	
	$("#btnAdd").click(function() {//추가버튼을 눌렀을 때 함수실행
	
		//lunchMenu에 값을 추가
		lunchMenu = ($("#food").val());
		
		//food_list에 입력받은 값을 추가
		food_list.push(lunchMenu);
		
		//food를 입력하는 창 초기화
		$("#food").val("");
		console.log(food_list);
		
		listView();//보여주는 함수
	});
	
	$("#btnReset").click(function() {//초기화 버튼을 눌렀을 때 함수실행
		$("#menu").empty();//1.ul에 있는 li를 모두 지운다
		//table 지우기
		$("#thead").empty();
		$("#tbody").empty();
		
		food_list = [];//2.메뉴가담긴 배열을 초기화한다
	});
	
	$("#btnTable").click(function() {//목록테이블 버튼을 눌렀을 때 함수실행
		tableView();
	});
	
});

</script>
</head>
<body>
	<h2>직장인이 선호하는 점심메뉴</h2>
	<ul id="menu">
	</ul>
	<input type="text" id="food">
	<button id="btnAdd">추가</button>
	<button id="btnTable">목록테이블</button>
	<button id="btnReset">초기화</button>
	<hr>
	<table id="menuTable" cellspacing="0px">
		<thead id="thead">
		</thead>
		<tbody id="tbody"></tbody>
	</table>
</body>
</html>

 

  • 초기 화면

  • 입력창에 값을 입력하고 추가버튼을 누르면 실행되는 동작
  • ==> 배열에 입력값을 추가하고, listView()함수를 호출한다

  • 호출되는 listView()함수에서는 배열의 크기만큼 반복하면서 태그값에 배열의 값을 넣고, #menu에 넣어준다

  • 목록테이블 버튼을 누르면 tableView()함수를 호출한다
  •  tableView()함수는 #thead와 #tbody를 초기화하고(이전값을 지우기 위해)
  • 배열의 크기만큼 반복하며 테이블의 태그들을 생성, 값을 넣고 입력한다

  • #menu와 #menuTable에 추가되는 목록과 테이블을 확인할 수 있다

  • 초기화버튼을 누르면, #menu, #thead, #tbody (html)안의 내용을 지우고
  • 사용자가 입력한 값이 들어있는 배열도 초기화한다