JS中的Select框?qū)崿F(xiàn)模糊搜索功能
您可以使用JavaScript來(lái)實(shí)現(xiàn)模糊搜索的功能,以下是一個(gè)簡(jiǎn)單的示例代碼:
HTML部分:
<select id="select"> <option value="1">Apple</option> <option value="2">Banana</option> <option value="3">Cherry</option> <option value="4">Orange</option> </select>
JavaScript部分:
document.getElementById('select').addEventListener('input', function() { var input, filter, option, i; input = this.value; filter = input.toUpperCase(); options = this.getElementsByTagName('option'); for (i = 0; i < options.length; i++) { if (options[i].innerHTML.toUpperCase().indexOf(filter) > -1) { options[i].style.display = ''; } else { options[i].style.display = 'none'; } } });
以上代碼會(huì)監(jiān)聽(tīng)select框的input事件,當(dāng)用戶輸入內(nèi)容時(shí),會(huì)根據(jù)用戶輸入的內(nèi)容來(lái)過(guò)濾選項(xiàng)。只有當(dāng)某個(gè)選項(xiàng)的內(nèi)容包含了用戶輸入的內(nèi)容時(shí),該選項(xiàng)才會(huì)顯示出來(lái),否則會(huì)被隱藏。這樣就實(shí)現(xiàn)了模糊搜索的功能。
擴(kuò)展:js實(shí)現(xiàn)模糊查詢
今天為大家分享的是使用js實(shí)現(xiàn)模糊查詢:
首先寫出html
<div class="search"> <input type="text" class="inp"> <div class="but">搜索</div> </div> <div class="list"></div>
再寫css
* { padding: 0; margin: 0; } .search { width: 96%; margin-left: 2%; height: 60px; display: flex; align-items: center; justify-content: center; } .search input { width: 60%; height: 20px; border: 1px #eeeeee solid; padding: 5px; border-top-left-radius: 20px; border-bottom-left-radius: 20px; } .search div { width: 20%; height: 32px; text-align: center; line-height: 32px; background-color: #eeeeee; border-top-right-radius: 20px; border-bottom-right-radius: 20px; } .list { width: 96%; margin-left: 2%; } .list div { width: 100%; height: 40px; display: flex; justify-content: space-around; } .list span { display: block; width: 20%; line-height: 40px; text-align: center; }
現(xiàn)在結(jié)構(gòu)樣式都有的就該寫數(shù)據(jù)了
let arr = [{ name: "吳小糖", addres: "河南", base: 410725, num: 9999 }, { name: "吳三", addres: "浙江", base: 102419, num: 10000 }, { name: "吳磊", addres: "北京", base: 314345, num: 5555 }, { name: "吳謹(jǐn)言", addres: "湖南", base: 341026, num: 7888 }, { name: "吳爽", addres: "河南", base: 410756, num: 6666 }, { name: "吳宣儀", addres: "海南", base: 243187, num: 9999 }]
下一步就該js部分了
let but = document.getElementsByClassName("but")[0]; let inp = document.getElementsByClassName("inp")[0]; sorts(arr); but.onclick = function() { let data = []; for (let i = 0; i < arr.length; i++) { for (let k in arr[i]) { if (String(arr[i][k]).indexOf(inp.value) > -1) { data.push(arr[i]); break; } } } sorts(data); } function sorts(a) { let str = ""; for (let i = 0; i < a.length; i++) { str += `<div> <span>${a[i].name}</span> <span>${a[i].base}</span> <span>${a[i].num}</span> <span>${a[i].addres}</span> </div>` } document.getElementsByClassName("list")[0].innerHTML = str; }
這樣就制作完成了,整體代碼如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title></title> <style> * { padding: 0; margin: 0; } .search { width: 96%; margin-left: 2%; height: 60px; display: flex; align-items: center; justify-content: center; } .search input { width: 60%; height: 20px; border: 1px #eeeeee solid; padding: 5px; border-top-left-radius: 20px; border-bottom-left-radius: 20px; } .search div { width: 20%; height: 32px; text-align: center; line-height: 32px; background-color: #eeeeee; border-top-right-radius: 20px; border-bottom-right-radius: 20px; } .list { width: 96%; margin-left: 2%; } .list div { width: 100%; height: 40px; display: flex; justify-content: space-around; } .list span { display: block; width: 20%; line-height: 40px; text-align: center; } </style> </head> <body> <div class="search"> <input type="text" class="inp"> <div class="but">搜索</div> </div> <div class="list"></div> <script type="text/javascript"> let arr = [{ name: "吳小糖", addres: "河南", base: 410725, num: 9999 }, { name: "吳三", addres: "浙江", base: 102419, num: 10000 }, { name: "吳磊", addres: "北京", base: 314345, num: 5555 }, { name: "吳謹(jǐn)言", addres: "湖南", base: 341026, num: 7888 }, { name: "吳爽", addres: "河南", base: 410756, num: 6666 }, { name: "吳宣儀", addres: "海南", base: 243187, num: 9999 }] let but = document.getElementsByClassName("but")[0]; let inp = document.getElementsByClassName("inp")[0]; sorts(arr); but.onclick = function() { let data = []; for (let i = 0; i < arr.length; i++) { for (let k in arr[i]) { if (String(arr[i][k]).indexOf(inp.value) > -1) { data.push(arr[i]); break; } } } sorts(data); } function sorts(a) { let str = ""; for (let i = 0; i < a.length; i++) { str += `<div> <span>${a[i].name}</span> <span>${a[i].base}</span> <span>${a[i].num}</span> <span>${a[i].addres}</span> </div>` } document.getElementsByClassName("list")[0].innerHTML = str; } </script> </body> </html> </body> </html>
以上就是本章的全部?jī)?nèi)容,感謝您的閱讀。
到此這篇關(guān)于JS實(shí)現(xiàn)select框?qū)崿F(xiàn)模糊搜索功能的文章就介紹到這了,更多相關(guān)js模糊搜索內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序?qū)Ш綑诟S滑動(dòng)效果的實(shí)現(xiàn)代碼
這篇文章主要介紹了小程序?qū)Ш綑诟S滑動(dòng)效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05js實(shí)現(xiàn)數(shù)字從零慢慢增加到指定數(shù)字示例
今天小編就為大家分享一篇js實(shí)現(xiàn)數(shù)字從零慢慢增加到指定數(shù)字示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11javascript實(shí)現(xiàn)掃雷簡(jiǎn)易版
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)掃雷簡(jiǎn)易版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08基于JavaScript實(shí)現(xiàn)前端文件的斷點(diǎn)續(xù)傳
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)前端文件的斷點(diǎn)續(xù)傳的相關(guān)資料,需要的朋友可以參考下2016-10-10js操作DOM--添加、刪除節(jié)點(diǎn)的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇js操作DOM--添加、刪除節(jié)點(diǎn)的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07關(guān)于JS數(shù)據(jù)類型檢測(cè)的多種方式總結(jié)
Javascript中檢查數(shù)據(jù)類型一直是老生常談的問(wèn)題,類型判斷在web開發(fā)中也有著非常廣泛的應(yīng)用,所以下面這篇文章主要給大家介紹了關(guān)于JS數(shù)據(jù)類型檢測(cè)的那些事,需要的朋友可以參考下2021-09-09