JavaScript實(shí)現(xiàn)搜索高亮功能詳解
前言
在開發(fā) Web 應(yīng)用時(shí),搜索功能是常見的需求之一。為了提升用戶體驗(yàn),我們可以通過高亮顯示搜索結(jié)果中的關(guān)鍵詞來幫助用戶快速定位信息。本文將介紹如何使用 HTML、CSS 和 JavaScript 實(shí)現(xiàn)一個簡單的搜索高亮功能。
1. 功能需求
我們的目標(biāo)是實(shí)現(xiàn)一個簡單的搜索框,用戶可以在其中輸入關(guān)鍵詞。當(dāng)用戶點(diǎn)擊搜索按鈕時(shí):
- 如果輸入框?yàn)榭?,則清除所有已有的高亮。
- 如果輸入框中有關(guān)鍵詞,則在頁面內(nèi)容中查找并高亮顯示所有匹配的文本。
2. HTML 結(jié)構(gòu)
HTML 部分非常簡單,包含一個搜索框、一個搜索按鈕和一些示例文本內(nèi)容。以下是完整的 HTML 代碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>搜索高亮功能</title> <!-- 寫css的地方 --> <style></style> </head> <body> <div class="search-container"> <input type="text" id="search-input" placeholder="請輸入搜索關(guān)鍵詞"> <button id="search-button">搜索</button> </div> <div class="content"> <p class="content-right">這是一個示例文本,用于演示搜索高亮功能。</p> <p class="content-right">你可以輸入關(guān)鍵詞,比如“示例”或“高亮”,看看效果。</p> <p class="content-right">這個功能使用了 JavaScript 來實(shí)現(xiàn)。</p> </div> </body> </html>
3. CSS 樣式
為了提升視覺效果,我們使用 CSS 對頁面進(jìn)行簡單的樣式設(shè)計(jì)。以下是 styles.css
的內(nèi)容:
body { font-family: Arial, sans-serif; margin: 0; padding: 0; background-color: #f4f4f4; } .search-container { display: flex; justify-content: center; align-items: center; margin: 20px; } #search-input { padding: 10px; font-size: 16px; border: 1px solid #ccc; border-radius: 4px; width: 300px; } #search-button { padding: 10px 20px; font-size: 16px; background-color: #007BFF; color: white; border: none; border-radius: 4px; cursor: pointer; margin-left: 10px; } #search-button:hover { background-color: #0056b3; } .content { margin: 20px; } .content-right { margin-bottom: 10px; padding: 10px; background-color: white; border: 1px solid #ddd; border-radius: 4px; } em { background-color: yellow; font-weight: bold; }
4. JavaScript 實(shí)現(xiàn)
JavaScript 是實(shí)現(xiàn)搜索高亮功能的核心部分。以下是代碼的詳細(xì)解析:
document.addEventListener("DOMContentLoaded", () => { const searchInput = document.getElementById("search-input"); const searchButton = document.getElementById("search-button"); const contentItems = document.querySelectorAll(".content-right"); searchButton.addEventListener("click", () => { const keyword = searchInput.value.trim(); // 清除之前的高亮 contentItems.forEach(item => { item.innerHTML = item.textContent; }); // 如果關(guān)鍵詞不為空,則進(jìn)行高亮 if (keyword) { contentItems.forEach(item => { if (item.textContent.includes(keyword)) { item.innerHTML = item.textContent.replace( new RegExp(keyword, "gi"), `<em>${keyword}</em>` ); } }); } }); });
5. 總結(jié)
通過簡單的 HTML、CSS 和 JavaScript,我們實(shí)現(xiàn)了一個搜索高亮功能。這個功能不僅可以提升用戶體驗(yàn),還可以作為學(xué)習(xí)前端開發(fā)的一個很好的實(shí)踐項(xiàng)目。你可以根據(jù)實(shí)際需求進(jìn)一步擴(kuò)展功能,例如支持動態(tài)內(nèi)容更新或優(yōu)化性能。
希望這篇文章對你有所幫助!如果你有任何問題或建議,歡迎在評論區(qū)留言。
- 獲取 DOM 元素:
使用 document.getElementById
和 document.querySelectorAll
獲取搜索框、搜索按鈕和內(nèi)容區(qū)域。
- 綁定點(diǎn)擊事件:
為搜索按鈕綁定點(diǎn)擊事件,當(dāng)用戶點(diǎn)擊按鈕時(shí)觸發(fā)搜索邏輯。
- 清除高亮:
在每次搜索前,清除之前的所有高亮內(nèi)容。通過將 innerHTML
替換為 textContent
,移除所有 <em>
標(biāo)簽。
- 高亮關(guān)鍵詞:
如果用戶輸入的關(guān)鍵詞不為空,使用 String.prototype.includes
判斷內(nèi)容中是否包含關(guān)鍵詞。
使用正則表達(dá)式和 String.prototype.replace
方法將關(guān)鍵詞替換為 <em>
包裹的文本,實(shí)現(xiàn)高亮效果。
以上就是JavaScript實(shí)現(xiàn)搜索高亮功能詳解的詳細(xì)內(nèi)容,更多關(guān)于JavaScript搜索高亮的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
js實(shí)現(xiàn)幻燈片效果(基于jquery插件)
說起幻燈片效果,想必大家都不陌生吧,接下來為大家介紹下使用jquery插件jquery.smallslider.js實(shí)現(xiàn)幻燈片效果示例代碼,喜歡的朋友可以學(xué)習(xí)下2013-11-11