본문 바로가기
Javascript/Javascript 기본

여행 준비물 점검 목록 만들기

by 닉우 2020. 7. 26.

<코드기록>

 

<html>

<body>
	<div id="wrapper">
		<h2>여행 준비물 점검 목록</h2>
		<form onsubmit="return false">
			<input type="text" id="item" autofocus="true" onkeypress="if(event.keyCode===13) {addList()};" />
			<button type="button" id="add" class="addBtn">추가</button>
		</form>
		<div id="itemList"></div>

	</div>
	<script src="./js/checklist.js"></script>
</body>

 

<Js>

let itemList = [];
let addBtn = document.querySelector("#add");
addBtn.addEventListener("click", addList);

function addList() {
    let item = document.querySelector("#item").value; //value는 input창에 입력된 값을 말한다.

    if (item !== null) {
        itemList.push(item); //배열안에 value를 집어 넣을것.
        document.querySelector("#item").value = ""; //다음 값을 입력하기 편하게 입력창을 리셋
        document.querySelector("#item").focus();
    }
    showList(); // 목록을 화면에 보여주는 함수
}


function showList() {
    let list = "<ul>";
    for (let i = 0; i < itemList.length; i++) {
        list += "<li>" + itemList[i] + "<span class = 'close' id = " + i + "> X </span></li>"
    }
    list += "</ul>";
    document.querySelector("#itemList").innerHTML = list;
    const remove = document.querySelectorAll(".close"); //span태그에 X 만든곳의 class가 close다.
    for (let i = 0; i < remove.length; i++) {
        remove[i].addEventListener("click", removeList); // X버튼 클릭시 삭제함수가 실행된다.
    }
}

function removeList() {
    const id = this.getAttribute("id");
    itemList.splice(id, 1); //해당 id를 가진 값을 추출한다.
    showList(); // 나머지 값들을 다시 화면에 띄운다. 
}

<실행화면>

 

<this 사용>

 

X버튼을 눌렀을 때 실행되는 삭제 함수인데,

여기서 사용된 this 예약어는 객체에서 이벤트가 발생했을 때 그 이벤트의 대상을 알아내기 위해 사용된다. 

(this는 상황에 따라 다르게 사용되므로 항상 이벤트 발생 요소를 가져오는것은 아니다.)

 

누른버튼(this)의 id값을 가져와서 id 변수에 저장한 것.

 

<엔터키를 눌렀을 때 add 기능 만들기>

 

1. form 태그에 onsubmit="return false"를 추가

- Submit 하기 전에 사용자가 입력한 내용을 자바스크립트로 먼저 체크하는 동작을 할 수 없는 문제점 때문에 사용됨

- 추가로 해당 form엘레먼트의 자식으로 <input type="submit"> 이
존재하는 경우 <input type="text">에 엔터키 이벤트 발생시 포커스가
<input type="submit">으로 이동하는 현상이 있음.

 

2. 13은 엔터키를 의미한다. 엔터를 누르면 addList 함수가 실행됨.

 


 

 

 

 

 

 

※ 본 포스팅은 개인 공부 기록을 목적으로 남긴 글이며 본 사실과 다른 부분이 있다면 과감하게 지적 부탁드립니다.

 

 

 

 

 

 

 

 

 

댓글