


Bagaimana untuk menyerlahkan hasil rentetan yang dicari menggunakan JavaScript?
在大量文本中搜索特定内容是 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 设置为文本内容来恢复原始内容。
方法三:使用正则表达式
在此方法中,我们将利用正则表达式的强大功能来动态突出显示搜索到的字符串。正则表达式提供了一种灵活而强大的方法来匹配字符串中的模式。以下是我们如何使用正则表达式突出显示搜索到的字符串−
示例< /h3>
<!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>
Salin selepas log masuk
<!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”(全局且不区分大小写)。我们将搜索值括在括号中以将其捕获为一个组。
Di dalam fungsi highlightText(), kami mendapatkan semula rentetan carian, memangkasnya dan mendapatkan semula kandungan contentElement menggunakan HTML dalamannya. Kami kemudian menggunakan kaedah Ganti() pada rentetan kandungan, menyediakan ungkapan biasa dan rentetan gantian yang membungkus nilai carian yang sepadan dalam elemen dengan kelas "serlahkan".
Perbandingan kaedah
Sekarang, mari bandingkan kaedah yang kami perkenalkan -
Kaedah 1: Manipulasi HTML dalaman
Prestasi− Kaedah ini sangat berkesan untuk teks bersaiz kecil dan sederhana, tetapi disebabkan oleh operasi manipulasi rentetan, ia tidak sesuai untuk teks yang lebih besar Mungkin lebih perlahan.
Mudah untuk dilaksanakan − Ia agak mudah untuk dilaksanakan menggunakan fungsi rentetan terbina dalam JavaScript.
Ia memberikan fleksibiliti dalam menyesuaikan gaya sorotan dan mengendalikan sensitiviti kes. Keserasian Pelayar−
Kaedah ini disokong secara meluas dalam pelayar moden. Kaedah 2: Gunakan kelas CSS untuk menyerlahkan
Prestasi
−
- Kaedah ini mungkin lebih perlahan berbanding kaedah lain, terutamanya apabila berurusan dengan teks besar atau Apabila carian kerap operasi berlaku kerana overhed manipulasi DOM.
-
Ia memerlukan pemahaman yang baik tentang manipulasi DOM dan mungkin melibatkan kod yang lebih kompleks. Ia memberikan fleksibiliti dalam menyesuaikan gaya sorotan dan mengendalikan sensitiviti kes.
-
Keserasian Penyemak Imbas−Pelayar moden menyokong kaedah ini, tetapi pelaksanaan yang berbeza mungkin berkelakuan sedikit berbeza .
- Kaedah 3: Gunakan ungkapan biasa
Prestasi−
Ungkapan biasa boleh mencari dan menyerlahkan teks dengan sangat cekap, walaupun dengan jumlah data yang besar. Mudah untuk dilaksanakan −
Melaksanakan ungkapan biasa memerlukan pemahaman mendalam tentang sintaksnya yang berguna untuk pemula. Mungkin lebih mencabar. Ungkapan biasa menyediakan kefungsian Padanan corak yang berkuasa, membenarkan carian lanjutan dan pilihan penyerlahan.
Keserasian Pelayar− Penyemak imbas moden secara meluas menyokong ungkapan biasa, tetapi sesetengah versi lama mungkin menghadapi masalah dengan ungkapan biasa had atau perubahan dalam sokongan format.
KESIMPULAN
Dalam artikel ini, kami meneroka cara yang berbeza untuk menyerlahkan rentetan carian menggunakan JavaScript. Setiap pendekatan mempunyai kelebihan dan pertimbangan tersendiri, jadi adalah penting untuk menilai pendekatan tersebut berdasarkan faktor seperti prestasi, kemudahan pelaksanaan, fleksibiliti dan keserasian penyemak imbas.
Dengan memahami kaedah ini, anda boleh meningkatkan keupayaan carian aplikasi web anda dan memberikan pengalaman pengguna yang lebih intuitif.
Atas ialah kandungan terperinci Bagaimana untuk menyerlahkan hasil rentetan yang dicari menggunakan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Perbincangan mengenai realisasi kesan animasi tatal dan elemen Parallax dalam artikel ini akan meneroka bagaimana untuk mencapai yang serupa dengan laman web rasmi Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ... ...

Pembelajaran JavaScript tidak sukar, tetapi ia mencabar. 1) Memahami konsep asas seperti pembolehubah, jenis data, fungsi, dan sebagainya. 2) Pengaturcaraan asynchronous tuan dan melaksanakannya melalui gelung acara. 3) Gunakan operasi DOM dan berjanji untuk mengendalikan permintaan tak segerak. 4) Elakkan kesilapan biasa dan gunakan teknik debugging. 5) Mengoptimumkan prestasi dan mengikuti amalan terbaik.

Terokai pelaksanaan fungsi seretan panel dan drop panel seperti VSCode di bahagian depan. Dalam pembangunan front-end, bagaimana untuk melaksanakan vscode seperti ...

Perbincangan mendalam mengenai punca-punca utama perbezaan dalam output konsol.log. Artikel ini akan menganalisis perbezaan hasil output fungsi Console.log dalam sekeping kod dan menerangkan sebab -sebab di belakangnya. � ...
