在大量文本中搜索特定内容是 Web 应用程序中的一项常见任务。然而,仅显示搜索结果而没有任何视觉指示可能会使用户难以识别和关注相关信息。这就是需要突出显示搜索字符串的地方。通过动态突出显示文本的匹配部分,我们可以改善用户体验,让用户更容易找到所需的内容。
在这篇博文中,我们将探索使用 JavaScript 突出显示搜索字符串的不同方法。我们将介绍从操作 HTML 内容到利用正则表达式和 CSS 样式的各种技术。无论您是为网站构建搜索功能还是开发基于文本的应用程序,这些方法都将使您能够增强搜索结果的可见性并提供更直观的用户界面。
方法 1 - 操作内部 HTML
突出显示搜索字符串的一种直接方法是操作包含文本的元素的内部 HTML。此方法涉及查找文本中出现的搜索字符串,并用 HTML 标记将其包裹起来,或应用内联样式以直观地突出显示它们。
要实现此方法,请按照以下步骤操作 -
检索执行搜索的目标元素的内容。
使用replace()方法或正则表达式查找搜索字符串并将其替换为突出显示的版本。
用 HTML 标签包裹匹配的字符串或应用内联样式来突出显示它。
将修改后的内容设置回目标元素的内部 HTML。
让我们用一个例子来说明这一点。假设我们有一个类名为“content”的 HTML 元素,并且我们想要突出显示其中出现的搜索字符串。我们可以使用以下 JavaScript 代码 -
// Get the target element const contentElement = document.querySelector('.content'); // Retrieve the content const content = contentElement.innerHTML; // Replace the search string with the highlighted version const highlightedContent = content.replace(/search-string/gi, '$&'); // Set the modified content back to the element contentElement.innerHTML = highlightedContent;
在上面的代码中,我们使用带有正则表达式的replace()方法来查找所有出现的搜索字符串并将其替换为突出显示的版本。替换字符串中的 $& 代表匹配的字符串本身。我们用 元素包装它,并应用“highlight”类来设置样式。
示例
示例如下 -
<!DOCTYPE html> <html> <head> <style> .highlight { background-color: yellow; font-weight: bold; } </style> </head> <body> <div class="content"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam cursus maximus eros, non consequat nulla vulputate id. Sed porttitor quam a felis viverra lacinia. Vestibulum vestibulum massa at orci ultrices, in maximus tellus aliquam. </div> <form> <input type="text" id="searchInput" placeholder="Search..."> <button type="button" onclick="highlightText()">Search</button> </form> <script> function highlightText() { const searchInput = document.getElementById('searchInput'); const searchValue = searchInput.value.trim(); const contentElement = document.querySelector('.content'); if (searchValue !== '') { const content = contentElement.innerHTML; const highlightedContent = content.replace( new RegExp(searchValue, 'gi'), '<span class="highlight">$&</span>' ); contentElement.innerHTML = highlightedContent; } else { contentElement.innerHTML = contentElement.textContent; } } </script> </body> </html>
在此示例中,我们有一个 HTML 文档,其内容 div 包含一些示例文本。我们还有一个供用户输入搜索字符串的输入字段和一个搜索按钮。当用户点击搜索按钮时,就会触发highlightText()函数。
在highlightText()函数中,我们从输入字段中检索搜索字符串并修剪任何前导或尾随空格。如果搜索字符串不为空,我们将使用其内部 HTML 检索 contentElement 的内容。然后,我们使用 Replace() 方法和正则表达式将所有出现的搜索字符串(不区分大小写)替换为突出显示的版本。匹配的字符串 ($&) 包装在具有“highlight”类的 元素中。
如果搜索字符串为空,我们通过将内部 HTML 设置为 contentElement 的文本内容来恢复原始内容。
方法二:使用CSS类进行高亮
在此方法中,我们将利用 CSS 类来突出显示搜索到的字符串,而不是操作内部 HTML。实现方法如下。
示例
<!DOCTYPE html> <html> <head> <style> .highlight { background-color: yellow; font-weight: bold; } </style> </head> <body> <div class="content"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam cursus maximus eros, non consequat nulla vulputate id. Sed porttitor quam a felis viverra lacinia. Vestibulum vestibulum massa at orci ultrices, in maximus tellus aliquam. </div> <form> <input type="text" id="searchInput" placeholder="Search..."> <button type="button" onclick="highlightText()">Search</button> </form> <script> function highlightText() { const searchInput = document.getElementById('searchInput'); const searchValue = searchInput.value.trim(); const contentElement = document.querySelector('.content'); if (searchValue !== '') { const content = contentElement.textContent; const regex = new RegExp(searchValue, 'gi'); const highlightedContent = content.replace( regex, (match) => `<span class="highlight">${match}</span>` ); contentElement.innerHTML = highlightedContent; } else { contentElement.innerHTML = contentElement.textContent; } } </script> </body> </html>
在此示例中,我们定义了一个名为“highlight”的 CSS 类,它为突出显示的文本应用所需的样式。在highlightText()函数中,我们检索搜索字符串,修剪它,并使用其文本内容检索contentElement的内容。然后,我们使用搜索字符串和标志“gi”(全局且不区分大小写)创建正则表达式。
接下来,我们对内容字符串使用 Replace() 方法,将所有出现的搜索字符串替换为突出显示的版本。我们不使用字符串替换,而是使用回调函数,将匹配的字符串包装在具有“highlight”类的 元素中。
最后,我们将 contentElement 的内部 HTML 设置为突出显示的内容。如果搜索字符串为空,我们通过将内部 HTML 设置为文本内容来恢复原始内容。
方法三:使用正则表达式
在此方法中,我们将利用正则表达式的强大功能来动态突出显示搜索到的字符串。正则表达式提供了一种灵活而强大的方法来匹配字符串中的模式。以下是我们如何使用正则表达式突出显示搜索到的字符串−
示例
<!DOCTYPE html>
<html>
<head>
<style>
.highlight {
background-color: yellow;
font-weight: bold;
}
</style>
</head>
<body>
<div id="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Aliquam cursus maximus eros, non consequat nulla vulputate id.
Sed porttitor quam a felis viverra lacinia.
Vestibulum vestibulum massa at orci ultrices, in maximus tellus aliquam.
</div>
<form>
<input type="text" id="searchInput" placeholder="Search...">
<button type="button" onclick="highlightText()">Search</button>
</form>
<script>
function highlightText() {
const searchInput = document.getElementById('searchInput');
const searchValue = searchInput.value.trim();
const contentElement = document.getElementById('content');
if (searchValue !== '') {
const content = contentElement.innerHTML;
const regex = new RegExp(`(${searchValue})`, 'gi');
const highlightedContent = content.replace(
regex,
'<span class="highlight">$1</span>'
);
contentElement.innerHTML = highlightedContent;
} else {
contentElement.innerHTML = contentElement.textContent;
}
}
</script>
</body>
</html>
在此示例中,我们使用 RegExp 构造函数定义正则表达式,传递搜索值和标志“gi”(全局且不区分大小写)。我们将搜索值括在括号中以将其捕获为一个组。
highlightText() 함수 내에서 검색 문자열을 검색하고 다듬은 다음 내부 HTML을 사용하여 contentElement의 콘텐츠를 검색합니다. 그런 다음 콘텐츠 문자열에 대해 바꾸기() 메서드를 사용하여 "highlight" 클래스가 있는 요소에서 일치하는 검색 값을 래핑하는 대체 문자열과 정규식을 제공합니다.
방법 비교
이제 소개해드린 방법들을 비교해 볼까요 -
방법 1: 내부 HTML 조작
Performance− 이 방법은 중소 규모의 텍스트에 매우 효과적이지만 문자열 조작 작업으로 인해 큰 텍스트의 경우 속도가 느려질 수 있습니다.
구현하기 쉬움− JavaScript에 내장된 문자열 함수를 사용하여 비교적 쉽게 구현할 수 있습니다.
Flexibility− 하이라이트 스타일을 사용자 정의하고 대소문자 구분을 처리하는 유연성을 제공합니다.
브라우저 호환성−이 방법은 최신 브라우저에서 널리 지원됩니다.
방법 2: 강조 표시에 CSS 클래스 사용
성능− 이 방법은 특히 DOM 조작 오버헤드로 인해 큰 텍스트나 빈번한 검색 작업을 처리할 때 다른 방법에 비해 속도가 느릴 수 있습니다.
구현하기 쉬움− DOM 조작에 대한 충분한 이해가 필요하며 더 복잡한 코드가 포함될 수 있습니다.
Flexibility− 하이라이트 스타일을 사용자 정의하고 대소문자 구분을 처리하는 유연성을 제공합니다.
브라우저 호환성−최신 브라우저는 이 방법을 지원하지만 구현에 따라 약간 다르게 동작할 수 있습니다.
방법 3: 정규식 사용
Performance− 정규 표현식은 많은 양의 데이터에서도 매우 효율적으로 텍스트를 검색하고 강조 표시할 수 있습니다.
구현하기 쉬움− 정규식을 구현하려면 구문에 대한 깊은 이해가 필요하며 이는 초보자에게 더 어려울 수 있습니다.
Flexibility−정규식은 강력한 패턴 일치 기능을 제공하여 고급 검색 및 강조 옵션을 허용합니다.
브라우저 호환성− 최신 브라우저는 정규식을 광범위하게 지원하지만 일부 이전 버전에서는 정규식 지원이 제한되거나 변경될 수 있습니다.
결론
이 기사에서는 JavaScript를 사용하여 검색 문자열을 강조 표시하는 다양한 방법을 살펴봅니다. 각 접근 방식에는 고유한 장점과 고려 사항이 있으므로 성능, 구현 용이성, 유연성 및 브라우저 호환성과 같은 요소를 기반으로 평가하는 것이 중요합니다.
이러한 방법을 이해하면 웹 애플리케이션의 검색 기능을 향상하고 보다 직관적인 사용자 경험을 제공할 수 있습니다.
위 내용은 JavaScript를 사용하여 검색된 문자열 결과를 강조 표시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

JavaScript는 1995 년에 시작하여 Brandon Ike에 의해 만들어졌으며 언어를 C로 실현했습니다. 1.C Language는 JavaScript의 고성능 및 시스템 수준 프로그래밍 기능을 제공합니다. 2. JavaScript의 메모리 관리 및 성능 최적화는 C 언어에 의존합니다. 3. C 언어의 크로스 플랫폼 기능은 자바 스크립트가 다른 운영 체제에서 효율적으로 실행하는 데 도움이됩니다.

JavaScript는 브라우저 및 Node.js 환경에서 실행되며 JavaScript 엔진을 사용하여 코드를 구문 분석하고 실행합니다. 1) 구문 분석 단계에서 초록 구문 트리 (AST)를 생성합니다. 2) 컴파일 단계에서 AST를 바이트 코드 또는 기계 코드로 변환합니다. 3) 실행 단계에서 컴파일 된 코드를 실행하십시오.

Python 및 JavaScript의 미래 추세에는 다음이 포함됩니다. 1. Python은 과학 컴퓨팅 분야에서의 위치를 통합하고 AI, 2. JavaScript는 웹 기술의 개발을 촉진하고, 3. 교차 플랫폼 개발이 핫한 주제가되고 4. 성능 최적화가 중점을 둘 것입니다. 둘 다 해당 분야에서 응용 프로그램 시나리오를 계속 확장하고 성능이 더 많은 혁신을 일으킬 것입니다.

개발 환경에서 Python과 JavaScript의 선택이 모두 중요합니다. 1) Python의 개발 환경에는 Pycharm, Jupyternotebook 및 Anaconda가 포함되어 있으며 데이터 과학 및 빠른 프로토 타이핑에 적합합니다. 2) JavaScript의 개발 환경에는 Node.js, VScode 및 Webpack이 포함되어 있으며 프론트 엔드 및 백엔드 개발에 적합합니다. 프로젝트 요구에 따라 올바른 도구를 선택하면 개발 효율성과 프로젝트 성공률이 향상 될 수 있습니다.

예, JavaScript의 엔진 코어는 C로 작성되었습니다. 1) C 언어는 효율적인 성능과 기본 제어를 제공하며, 이는 JavaScript 엔진 개발에 적합합니다. 2) V8 엔진을 예를 들어, 핵심은 C로 작성되며 C의 효율성 및 객체 지향적 특성을 결합하여 C로 작성됩니다.

JavaScript는 웹 페이지의 상호 작용과 역학을 향상시키기 때문에 현대 웹 사이트의 핵심입니다. 1) 페이지를 새로 고치지 않고 콘텐츠를 변경할 수 있습니다. 2) Domapi를 통해 웹 페이지 조작, 3) 애니메이션 및 드래그 앤 드롭과 같은 복잡한 대화식 효과를 지원합니다. 4) 성능 및 모범 사례를 최적화하여 사용자 경험을 향상시킵니다.

C 및 JavaScript는 WebAssembly를 통한 상호 운용성을 달성합니다. 1) C 코드는 WebAssembly 모듈로 컴파일되어 컴퓨팅 전력을 향상시키기 위해 JavaScript 환경에 도입됩니다. 2) 게임 개발에서 C는 물리 엔진 및 그래픽 렌더링을 처리하며 JavaScript는 게임 로직 및 사용자 인터페이스를 담당합니다.

JavaScript는 웹 사이트, 모바일 응용 프로그램, 데스크탑 응용 프로그램 및 서버 측 프로그래밍에서 널리 사용됩니다. 1) 웹 사이트 개발에서 JavaScript는 HTML 및 CSS와 함께 DOM을 운영하여 동적 효과를 달성하고 jQuery 및 React와 같은 프레임 워크를 지원합니다. 2) 반응 및 이온 성을 통해 JavaScript는 크로스 플랫폼 모바일 애플리케이션을 개발하는 데 사용됩니다. 3) 전자 프레임 워크를 사용하면 JavaScript가 데스크탑 애플리케이션을 구축 할 수 있습니다. 4) node.js는 JavaScript가 서버 측에서 실행되도록하고 동시 요청이 높은 높은 요청을 지원합니다.


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

Dreamweaver Mac版
시각적 웹 개발 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
