검색 효과
const str1 ="javascript reference";
const currentStr1 = str1.charAt(); //j
const currentStr2 = str1.charAt("0"); //j
const currentStr3 = str1.charAt("1"); //a
const currentStr4 = str1.charAt("2"); //v
JS 소스 분석하기
const searchkeyWord = document.querySelectorAll(".search__info .keyword span"); //알파벳
const searchList = document.querySelectorAll(".search__list ul li"); //목록 리스트
const searchInfo = document.querySelector(".search__info .num");
// 전채 갯수 구하기
searchInfo.textContent = searchList.length
//
searchkeyWord.forEach(el =>{
el.addEventListener("click", () =>{
const searchWord = el.innerText; //사용자가 클릭한 알파벳
searchList.forEach(el => {
const cssName = el.querySelector("strong").innerText; //속성 텍스트
// 알파벳 첫글자 == CSS 속성의 첫글자
if(searchWord.charAt(0)==cssName.charAt(0)){
el.classList.remove("hide");
} else{
el.classList.add("hide");
}
})
const searchList2 = document.querySelectorAll(".search__list ul .hide");
searchInfo.textContent = searchList.length -= searchList2.length;
});
});
'a'라는 버튼을 누르게되면 charAt(0)를 통해 a라는 문자를 반환하겠죠? 그리고 cssName.charAt(0)또한 첫번째 문자가 a인 속성값들과 비교하게 됩니다. 그러므로 첫 글자가 a가 아닌 문자들은 class=hide가 붙어 미출력되고, 첫 글자가 a인 문자들만 class=hide가 제거되어 우리눈에 보이게 되는것입니다.
▶ 이번엔 출력된 갯수만 구하는 스크립트에 대해 알아봐요
const searchList2 = document.querySelectorAll(".search__list ul .hide");
searchInfo.textContent = searchList.length -= searchList2.length;
저희가 기존 검색효과에서 css속성 전체 갯수를 searchList라는 변수에 넣어주었는데요.
"전체 값 - 출력되지 않은 속성들 갯수"를 해주면 간단하게 되겠죠?
그래서 새롭게 searchList2라는 변수를 만든 후 이 변수에 if문이 실행된 후 class=hide가 붙은 것들의 갯수를 구하게 합니다.
그러면 전체갯수는 이미 구해져 있으므로 그 값에서 새롭게 구한 searchList2값을 빼면 되겠죠?
끝이에요!
'Effect > Search Effect' 카테고리의 다른 글
[자바스크립트 응용하기] 검색 이펙트06_ 정렬 (1) | 2022.10.23 |
---|---|
[자바스크립트 응용] 검색 효과 05_ 중요도 순 (2) | 2022.10.03 |
[자바스크립트 응용] 검색 효과 04_ 버튼 방식 (1) | 2022.10.03 |
서치 이펙트02 (6) | 2022.08.17 |
서치 이펙트01 (6) | 2022.08.16 |
댓글