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

 更新时间:2024年06月06日 11:39:37   作者:茶卡盐佑星_  
本文通过实例代码介绍JS中的Select框实现模糊搜索功能,下面是使用JavaScript来实现模糊搜索的功能,代码分为html部分和javascript部分,感兴趣的朋友跟随小编一起看看吧

您可以使用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模糊搜索内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • webpack4.x下babel的安装、配置及使用详解

    webpack4.x下babel的安装、配置及使用详解

    这篇文章主要介绍了webpack4.x下babel的安装、配置及使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 收集前端面试题之url、href、src

    收集前端面试题之url、href、src

    本文给大家分享小编日常收集整理的关于前端面试题之url、href、src的语法规则及基本概念,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2018-03-03
  • JS实现点击文字对应DIV层不停闪动效果的方法

    JS实现点击文字对应DIV层不停闪动效果的方法

    这篇文章主要介绍了JS实现点击文字对应DIV层不停闪动效果的方法,实例分析了javascript操作div层的效果,非常实用,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • 微信小程序用canvas实现圆形进度条

    微信小程序用canvas实现圆形进度条

    这篇文章主要为大家详细介绍了微信小程序用canvas实现圆形进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 极力推荐10个短小实用的JavaScript代码段

    极力推荐10个短小实用的JavaScript代码段

    这篇文章主要为大家极力推荐10个短小实用的JavaScript代码段,帮助大家节省大量开发时间,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • 微信小程序仿今日头条导航栏滚动解析

    微信小程序仿今日头条导航栏滚动解析

    这篇文章主要介绍了微信小程序仿今日头条导航栏滚动解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 微信小程序flex-grow无效的解决方案

    微信小程序flex-grow无效的解决方案

    在微信小程序中使用 Flexbox 布局时,如果遇到 flex-grow 属性无效的情况,可能是由几个不同的原因导致的,以下是一些可能的原因和解决方案,感兴趣的朋友一起看看吧
    2024-08-08
  • HTML+JS实现经典推箱子游戏

    HTML+JS实现经典推箱子游戏

    今天,这篇文章将利用HTML,CSS,JS的知识编写一个童年经典游戏 - 推箱子,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-11-11
  • ES6中新增的Object.assign()方法详解

    ES6中新增的Object.assign()方法详解

    Object.assign方法用于对象的合并,将源对象( source )的所有可枚举属性,复制到目标对象( target ),下面这篇文章主要给大家介绍了关于ES6中新增的Object.assign()方法的相关资料,需要的朋友可以参考下。
    2017-09-09
  • js实现跨域访问的三种方法

    js实现跨域访问的三种方法

    这篇文章主要介绍了js实现跨域访问的三种方法,包括基于iframe实现跨域、基于script标签实现跨域以及后台代理方式 ,感兴趣的小伙伴们可以参考一下
    2015-12-12

最新评论