JS中的Select框?qū)崿F(xiàn)模糊搜索功能
您可以使用JavaScript來實現(xià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';
}
}
});以上代碼會監(jiān)聽select框的input事件,當用戶輸入內(nèi)容時,會根據(jù)用戶輸入的內(nèi)容來過濾選項。只有當某個選項的內(nèi)容包含了用戶輸入的內(nèi)容時,該選項才會顯示出來,否則會被隱藏。這樣就實現(xiàn)了模糊搜索的功能。
擴展:js實現(xiàn)模糊查詢
今天為大家分享的是使用js實現(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: "吳謹言",
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: "吳謹言",
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>以上就是本章的全部內(nèi)容,感謝您的閱讀。
到此這篇關(guān)于JS實現(xiàn)select框?qū)崿F(xiàn)模糊搜索功能的文章就介紹到這了,更多相關(guān)js模糊搜索內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js實現(xiàn)數(shù)字從零慢慢增加到指定數(shù)字示例
今天小編就為大家分享一篇js實現(xiàn)數(shù)字從零慢慢增加到指定數(shù)字示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
基于JavaScript實現(xiàn)前端文件的斷點續(xù)傳
這篇文章主要介紹了基于JavaScript實現(xiàn)前端文件的斷點續(xù)傳的相關(guān)資料,需要的朋友可以參考下2016-10-10
關(guān)于JS數(shù)據(jù)類型檢測的多種方式總結(jié)
Javascript中檢查數(shù)據(jù)類型一直是老生常談的問題,類型判斷在web開發(fā)中也有著非常廣泛的應用,所以下面這篇文章主要給大家介紹了關(guān)于JS數(shù)據(jù)類型檢測的那些事,需要的朋友可以參考下2021-09-09

