JavaScript
[JavaScript] 위시리스트 만들기
퓨어맨
2022. 5. 30. 08:53
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>위시리스트</title>
<link rel="StyleSheet" href="css/input.css">
<link rel="StyleSheet" href="css/list.css">
</head>
<body>
<div id = "wrapper">
<h2>나의 위시리스트</h2>
<!-- onsubmit = return false : 새로고침 안되게 만드는 방법-->
<form onsubmit="return false">
<input type = "text" id = "item">
<button id = "add" class = "addBtn">추가</button>
</form>
<!--위시리스트를 추가할 때마다 해당하는 데이터가 하나씩 추가될 공간-->
<div id = "itemList">
<ul>
<li>
스카이다이빙하기
<span class = "close">X</span>
</li>
</ul>
</div>
</div>
<script>
// 1. 사용자가 추가하기를 누른 데이터를 가져와서
// itemList안쪽에다가 ul 태그 형식으로 출력
// 1-1) 태그들 가져오기
let btn = document.getElementById('add')
// input 태그 가져오기
let input = document.getElementById('item')
// itemList라는 id 값을 가진 div 태그 가져오기
let list = document.getElementById('itemList')
// 배열 하나 생성하기(어디에 생성해야 할까?)
let arr = []
// itemList라는 div 태그 안에
// 내가 추가한 데이터를 전부 집어넣어주고
// span태그에게 클릭이벤트를 추가해주는 함수
let show = function(){
let content = '<ul>'
// div 태그 내부에 배열의 마지막 인덱스 데이터부터
// 순차적으로 배치해서 출력하기
for(let i = arr.length-1; i>=0; i--){
content += '<li>'+arr[i]+'<span id = "'+i+'" class = "close">X</span>'+'</li>'
}
content += '</ul>'
// div 태그 안쪽에 ul 태그 형식으로 해당하는 데이터 보여주기
list.innerHTML = content
// 2. span 태그를 가져오기
let span = document.querySelectorAll('span')
// 3. span 태그들에게 전부 클릭 이벤트를 걸어주기
for(let i = 0; i<span.length; i++){
// 참조하는 형식으로 추가해주기
span[i].onclick = remove
}
}
let remove = function(){
// 4. 내가 클릭한 span태그와 대응되는 배열안에 데이터를 삭제하기
arr.splice(this.id,1)
// this 키워드는 클릭이벤트가 발생한 태그 자체를 의미한다.
// 5. 다시 사용자에게 div 태그 안쪽에 ul 태그들을 보여주기
show()
}
// 1-2) 버튼에 이벤트 처리하는 기능 추가하기
btn.addEventListener('click',()=>{
// 1-3) input 태그 안에 있는 글자 가져오기
let text = input.value
// 클릭할 때마다 배열 안에 input 태그안에 있는 글자 추가하기
arr.push(text)
// 1-4) 출력하기
show()
// 1-5) input 태그 안에 있는 글자 지우기
input.value = ''
})
</script>
</body>
</html>