2024. 10. 10. 01:23ㆍJavaScript
우리가 사이트를 이용할 때 흔히 볼 수 있는 검색 필터 기능을 한 번 자바스크립트로 구현해볼 것이다.
코드 풀이
filter는 boolean 형식이다.
form태그를 쓴다면, form 이 제출될때 이벤트가 발생하도록 해야함.
: input 에 대한 key 이벤트 사용 X
submit 에 대한 click 이벤트 사용 X
form 에 대한 submit 이벤트를 사용한다.
form이 submit 되면 새로운 요청이 발생하고, 이후의 자바 스크립트는 무시한다.
form 에 대한 submit 이벤트는 반드시 !! 첫줄에 이벤트 기본작동을 막아야함.
-> event.preventDefault()
확실하게 하기 위해서는 console.log 를 이용하는 것이 가장 바람직하다.
-> console.log(searchValue) : 확인이 완료되면, 해당 코드는 아예 지우거나, 또는 주석처리로 남겨둔다
검색어 가져오기
-> const searchValue = event.target.querySelector('input').value
대상을 배열 형태로 불러옴
-> const arr = Array.from(document.querySelectorAll('ul > li'))
배열의 각각에 있는 hidden 을 모두 지워서 초기화
-> arr.forEach(e => e.classList.remove('hidden'))
검색어를 포함하지 않는 배열을 별도로 불러와서 모두 hidden 처리하기
: arr.filter 는 새로운 배열을 반환하기 때문에 arr2로 저장
arr.filter의 콜백함수는 boolean 타입을 반환하면 됨
-> const arr2 = arr.filter(e => e.innerText.includes(searchValue) == false)
arr2.forEach(e => e.classList.add('hidden'))
<style>
.hidden {
display: none;
}
</style>
</head>
<h1>내가 좋아하는 남자배우</h1>
<hr>
<form id="searchForm">
<p>
<input id="search" type="search" autocomplete="off" autofocus>
<input type="submit" value="검색">
</p>
</form>
<ul>
<li>차은우</li>
<li>김수현</li>
<li>서강준</li>
<li>변우석</li>
<li>위하준</li>
<li>김우빈</li>
<li>김건우</li>
<li>이민기</li>
<li>송강</li>
<li>강태오</li>
<li>이민기</li>
<li>우도환</li>
<li>조정석</li>
</ul>
<script>
const searchForm = document.getElementById('searchForm')
const ul = document.querySelector('ul')
searchForm.onsubmit = function(event) {
event.preventDefault()
const searchValue = event.target.querySelector('input').value
const arr = Array.from(document.querySelectorAll('ul > li'))
arr.forEach(e => e.classList.remove('hidden'))
// 검색어를 포함하지 않는 배열을 별도로 불러와서 모두 hidden 처리하기
// arr.filter 는 새로운 배열을 반환함(arr2 로 저장)
// arr.filter의 콜백함수는 boolean 타입을 반환하면 됨
// (조건을 만족하는 내용만 남기고 모두 제거)
const arr2 = arr.filter(e => e.innerText.includes(searchValue) == false)
arr2.forEach(e => e.classList.add('hidden'))
}
</script>
</body>
</html>
boolean형식으로 되어 있어서 조건을 처리하기가 까다롭지 않았다.
검색필터를 다른 언어로도 코드를 짜보니까 새롭기도 하고 재밌었다.
'JavaScript' 카테고리의 다른 글
[JavaScript] AJAX (0) | 2024.10.10 |
---|---|
[JavaScript] json 화면 구현 (0) | 2024.10.10 |
[JavaScript] ClickEvent (0) | 2024.10.10 |
[JavaScript] 정렬 (7) | 2024.10.09 |
[JavaScript] JavaScript 기본 다지기 (0) | 2024.10.09 |