当前位置: 代码网 > it编程>编程语言>Javascript > JS中的Select框实现模糊搜索功能

JS中的Select框实现模糊搜索功能

2024年06月12日 Javascript 我要评论
您可以使用javascript来实现模糊搜索的功能,以下是一个简单的示例代码:html部分:<select id="select"> <option value="1">ap

您可以使用javascript来实现模糊搜索的功能,以下是一个简单的示例代码:

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';
    }
  }
});

以上代码会监听select框的input事件,当用户输入内容时,会根据用户输入的内容来过滤选项。只有当某个选项的内容包含了用户输入的内容时,该选项才会显示出来,否则会被隐藏。这样就实现了模糊搜索的功能。

扩展:js实现模糊查询

今天为大家分享的是使用js实现模糊查询:

首先写出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;
}

现在结构样式都有的就该写数据了

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>

以上就是本章的全部内容,感谢您的阅读。 

到此这篇关于js实现select框实现模糊搜索功能的文章就介绍到这了,更多相关js模糊搜索内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com