목차
JavaScript 활용
기본 HTML 구조
FAQ 섹션
우리는 누구입니까
우리가하는 일
왜 여기서 일합니다
자세히 알아보십시오
핵심 자바 스크립트 기능
검색 기능 확장 : 퍼지 매칭
중요한 메모
결론
웹 프론트엔드 CSS 튜토리얼 바닐라 JavaScript를 사용한 내부 필터링 검색

바닐라 JavaScript를 사용한 내부 필터링 검색

Mar 18, 2025 pm 12:00 PM

바닐라 JavaScript를 사용한 내부 필터링 검색

간단한 인 페이지 검색 기능으로 정보가 풍부한 페이지에서 사용자 경험을 향상시킵니다. 데이터베이스 쿼리 또는 JSON 구문 분석은 잊어 버립니다.이 메소드는 웹 페이지의 렌더링 된 텍스트 내용을 직접 검색합니다. 브라우저 내장 검색 검색이 존재하지만이 접근 방식은 정제 된 필터링 경험을 제공하여 관련 결과를 강조하여 더 쉬운 탐색을 강조합니다.

기능을 보여주는 라이브 데모는 다음과 같습니다. [데모 링크]

이 기술을 실제 프로젝트에서 https://www.php.cn/link/2a60eed05079970d61abad679da7ae8f 에서 사용합니다.

JavaScript 활용

이 튜토리얼은 JavaScript를 사용하여 모든 대화식 요소를 관리합니다. 구체적으로, 그것은 다음과 같습니다.

  1. 검색 가능한 콘텐츠를 식별합니다.
  2. 검색 필드에서 사용자 입력을 모니터링합니다.
  3. 검색 가능한 요소의 innerText 필터링하십시오.
  4. 텍스트에 검색어가 포함되어 있는지 확인하십시오 ( .includes() 는 여기에서 중요합니다).
  5. 검색어 일치를 기반으로 요소 가시성을 전환합니다.

기본 HTML 구조

각 질문이 제목 및 내용이있는 "카드"로 표시되는 FAQ 페이지를 가정 해 봅시다.

<h1 id="FAQ-섹션"> FAQ 섹션</h1>

<div>
  <h3 id="우리는-누구입니까">우리는 누구입니까</h3>
  <p>그것은 5 세기뿐만 아니라 전자 조판으로의 도약으로 살아 남았으며, 본질적으로 변하지 않았다. 대중화되었습니다</p>
</div>

<div>
  <h3 id="우리가하는-일">우리가하는 일</h3>
  <p>그것은 5 세기뿐만 아니라 전자 조판으로의 도약으로 살아 남았으며, 본질적으로 변하지 않았다. 대중화되었습니다</p>
</div>

<div>
  <h3 id="왜-여기서-일합니다">왜 여기서 일합니다</h3>
  <p>그것은 5 세기뿐만 아니라 전자 조판으로의 도약으로 살아 남았으며, 본질적으로 변하지 않았다. 대중화되었습니다</p>
</div>

<div>
  <h3 id="자세히-알아보십시오">자세히 알아보십시오</h3>
  <p>우리에 대해 더 배우고 싶습니까?</p>
</div>
로그인 후 복사

수많은 질문이있는 페이지의 경우이 구조는 효과적으로 스케일링됩니다.

상호 작용을 활성화하기 위해 단일 CSS 규칙을 사용하겠습니다.

 . is-hidden {display : 없음; }
로그인 후 복사

이 클래스는 요소 가시성을 제어하기 위해 동적으로 추가되거나 제거됩니다. 검색 입력도 추가하겠습니다.

 <label for="searchbox">찾다:</label>
<input type="text" id="searchbox">
로그인 후 복사

핵심 자바 스크립트 기능

다음 JavaScript 코드는 검색 기능을 관리합니다.

 function livesearch () {
  let cards = document.querySelectorAll ( '. cards'); // 카드 요소를 선택합니다
  searchQuery = document.getElementById ( "SearchBox"). 값을 보자. // 검색어를 얻습니다

  cards.foreach (card => {
    TextContent = card.innertext.tolowercase (); // 소문자로 정규화합니다
    searchtermlower = searchQuery.tolowerCase (); // 소문자로 정규화합니다

    if (textContent.includes (SearchTermLower)) {
      card.classlist.remove ( 'is-hidden'); // 일치 카드 표시
    } 또 다른 {
      card.classlist.add ( 'is-hidden'); // 일치하지 않는 카드를 숨 깁니다
    }
  });
}

// 과도한 기능 호출을 방지하기 위해 작은 지연 추가
TypingTimer를하자;
타입 interval = 500을하자; // 반 초
let searchInput = document.getElementById ( 'SearchBox');

searchInput.addeventListener ( 'keyup', () => {
  클리어 타임 아웃 (typingtimer);
  typingtimer = settimeout (livesearch, typeinterval);
});
로그인 후 복사

코드는 카드를 통해 반복, 검색어 포함 확인 (사례에 민감하지 않음) 및 그에 따라 가시성을 업데이트합니다. 지연은 빠른 키 스트로크의 성능 문제를 방지합니다.

검색 기능 확장 : 퍼지 매칭

퍼지 매칭 (명시 적으로 표시되지 않더라도 관련 키워드 검색)을 통합하려면 숨겨진 요소 또는 속성 사용을 고려하십시오.

방법 1 : 숨겨진 요소

키워드가 포함 된 숨겨진 요소 추가 :

<div>
  <h3 id="우리는-누구입니까">우리는 누구입니까</h3>
  <p>...</p>
  <span class="hidden-keywords">비밀, 회사, 역사</span>
</div>
로그인 후 복사

숨겨진 키워드에 액세스하기 위해 innerText 대신 textContent 포함하도록 liveSearch 수정하십시오.

방법 2 : 속성

이미지에 alt 와 같은 속성을 사용하십시오.

<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174227042512545.jpg" class="lazy" alt="바닐라 JavaScript를 사용한 내부 필터링 검색">
로그인 후 복사

getAttribute('alt') 사용하여 liveSearch 조정하여 속성 값을 검색하십시오.

중요한 메모

이 검색 방법은 DOM에서 이미 렌더링 된 콘텐츠로 제한됩니다. 외부 데이터베이스 또는 대형 데이터 세트를 검색하는 데 적합하지 않습니다.

결론

바닐라 JavaScript로 구현 된이 간단하지만 효과적인 인 페이지 검색 솔루션은 광범위한 컨텐츠로 웹 페이지의 유용성을 크게 향상시킬 수 있습니다. FAQ 페이지에서 이미지 갤러리에 이르기까지 다양한 응용 프로그램에 맞게이 기술을 적응하고 확장하십시오.

위 내용은 바닐라 JavaScript를 사용한 내부 필터링 검색의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

끈적 끈적한 포지셔닝 및 대시 Sass가있는 쌓인 카드 끈적 끈적한 포지셔닝 및 대시 Sass가있는 쌓인 카드 Apr 03, 2025 am 10:30 AM

다른 날, 나는 Corey Ginnivan의 웹 사이트에서 스크롤 할 때 카드 모음이 서로 쌓이는 것을 발견했습니다.

Google 글꼴 변수 글꼴 Google 글꼴 변수 글꼴 Apr 09, 2025 am 10:42 AM

Google Fonts가 새로운 디자인 (트윗)을 출시 한 것을 볼 수 있습니다. 마지막 큰 재 설계와 비교할 때 이것은 훨씬 더 반복적 인 느낌이 듭니다. 차이를 간신히 말할 수 있습니다

HTML, CSS 및 JavaScript로 애니메이션 카운트 다운 타이머를 만드는 방법 HTML, CSS 및 JavaScript로 애니메이션 카운트 다운 타이머를 만드는 방법 Apr 11, 2025 am 11:29 AM

프로젝트에 카운트 다운 타이머가 필요한 적이 있습니까? 그런 것은 플러그인에 도달하는 것이 당연하지만 실제로는 훨씬 더 많습니다.

플렉스 레이아웃의 자주색 슬래시 영역이 잘못된 '오버플로 공간'으로 간주되는 이유는 무엇입니까? 플렉스 레이아웃의 자주색 슬래시 영역이 잘못된 '오버플로 공간'으로 간주되는 이유는 무엇입니까? Apr 05, 2025 pm 05:51 PM

플렉스 레이아웃의 보라색 슬래시 영역에 대한 질문 플렉스 레이아웃을 사용할 때 개발자 도구 (d ...)와 같은 혼란스러운 현상이 발생할 수 있습니다.

CSS를 통해 일류 이름 항목으로 자식 요소를 선택하는 방법은 무엇입니까? CSS를 통해 일류 이름 항목으로 자식 요소를 선택하는 방법은 무엇입니까? Apr 05, 2025 pm 11:24 PM

요소 수가 고정되지 않은 경우 CSS를 통해 지정된 클래스 이름의 첫 번째 자식 요소를 선택하는 방법. HTML 구조를 처리 할 때 종종 다른 요소를 만듭니다 ...

HTML 데이터 속성 안내서 HTML 데이터 속성 안내서 Apr 11, 2025 am 11:50 AM

HTML, CSS 및 JavaScript의 데이터 속성에 대해 알고 싶었던 모든 것.

Sass를 더 빨리 만들기위한 개념 증명 Sass를 더 빨리 만들기위한 개념 증명 Apr 16, 2025 am 10:38 AM

새로운 프로젝트가 시작될 때, Sass 컴파일은 눈을 깜박이게합니다. 특히 BrowserSync와 짝을 이루는 경우 기분이 좋습니다.

See all articles