前端js-----模糊搜索(indexOf)

news/2024/7/19 12:49:52 标签: js, javascript, 前端

效果:

在这里插入图片描述

js_3">原生js实现代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
			}

			.box {
				overflow: hidden;
				width: 400px;
				height: 700px;
				margin: 100px auto;
			}

			.in {
				width: 300px;
				height: 30px;
				outline: none;
				font-size: 20px;
			}

			.btn {
				width: 91px;
				height: 33px;
				transform: translateY(-1px);
			}

			.show {
				display: none;
				width: 398px;
				height: 300px;
				border: 1px solid #000;
			}
		</style>
	</head>
	<body>
		<div class="box">
			<input class="in" id="in" type="text" />
			<button type="button" id="btn" class="btn">查询</button>
			<div class="show"></div>
		</div>
	</body>
	<script type="text/javascript">javascript">
		var arr = ['淘宝', '淘宝首页', '淘宝购物车', '京东', '京东购物车', '天猫', '天猫购物车', '天猫首页', '京东首页', '淘宝支付', '微信支付', '支付宝', '银行卡支付'];


		var input = document.querySelector('#in');
		var btn = document.querySelector('#btn');
		var show = document.querySelector('.show');
		input.addEventListener('keyup', function() {
			show.style.display = 'block';
			//文本框的内的值与arr内的值匹配indexOf
			var str = '';
			arr.forEach(function(val) {
				var res = val.indexOf(input.value);
				//console.log(res);
				if (res != -1) {
					str += '<p>' + val + '</p>';
				}
			})
			//如果文本框的值为空或者为错误时,应给用户提示
			if (!str) {
				show.innerHTML = '<p>查询不到</p>';
			} else if (!input.value) {
				show.style.display = 'none';
			} else {
				show.innerHTML = str;
			}



		})
		input.addEventListener('blur', function() {
			show.style.display = 'none';
		})
		input.addEventListener('focus', function() {
			// if(this.value!=''){
			// 	show.style.display = 'block';
			// }else{
			// 	show.innerHTML = '<p>'+input.value+'</p>';
			// }	
			show.style.display = 'block';
			this.keyup();
			//show.innerHTML = '<p>' + input.value + '</p>';
		})    
		//判断一个按钮是否被点击
		var cli = false;
		btn.addEventListener('click', function() {
			cli = true;
		})
	</script>
</html>


http://www.niftyadmin.cn/n/1143452.html

相关文章

前端js-----三级联动

效果如下&#xff08;原生js&#xff09;&#xff1a; ------ HTML&#xff1a; <body>请选择省份<select name"" id"province"><option value"请选择省份">请选择省份</option></select>请选择市<select na…

前端js-----轮播图(焦点图)实现原理

轮播&#xff0c;无论是文字轮播还是图片轮播&#xff0c;他们的原理都是一样的&#xff0c;都是通过定时器setInterval执行循环展示和隐藏。 原理&#xff1a; 一系列的图片平铺&#xff0c;一般是放在li里面&#xff0c;只显示一张图片&#xff0c;其余图片隐藏over-follow:h…

前端js-----vue中的key

在官方文档中是这样解释的&#xff1a;key的特殊属性主要用在vue的虚拟DOM算法&#xff0c;在新旧nodes对比时辨识VNodes。如果不能使用key&#xff0c;Vue会使用一种最大 限度减少动态元素并且尽可能的尝试就地修改或修复相同类型元素的算法。而且使用key时&#xff0c;它会基…

Vue购物车(全选和全不选)

效果如下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><st…

Vue中作用域插槽的妙用

昨天在学后台管理项目的时候遇到了有趣的东西-----作用域插槽 为什么scope.row可以获得本行的数据&#xff0c;说明这个大神在封装组件的时候&#xff0c;用了一个插槽<slot :rowdata></slot> 话又说回来&#xff0c;什么是作用域插槽&#xff1a;当我们在封装组件…

Vue报错:NavigationDuplicated: Avoided redundant navigation to current location(提示这是到当前位置的冗余导航)

今天在做电影app时&#xff0c;需求是&#xff1a;有一个长列表&#xff0c;当我们滑动后&#xff0c;进入了另外一个页面之后在返回列表页时&#xff0c;会依旧保持我们第一次滑动的位置。看图&#xff1a; 解决方法&#xff1a; 在router.js&#xff08;由于配置不同&#xf…

Vue中解决better-scroll的滚动问题以及刷新页面better-scroll不起作用问题

不得不说better-scroll是个很好用的第三方框架&#xff0c;但是使用恰当才能发挥它强大的功能哦&#xff01;具体使用步骤请移步→better-scroll链接Github 但是better-scroll用的恰当的话并不会出现在手机上滚动不了的情况 具体问题&#xff1a; 1.使用的时候为什么滚动不起作…

vue中报错Error in render: “TypeError: Cannot read property ‘length‘ of undefined“

通过查阅资料&#xff0c;其实这种报错会有两种&#xff1a; 1.在html标签模板上使用length会报错&#xff0c;报错原因为在这个时候你还拿不到某个数组的length&#xff0c;解决方案为&#xff1a;在此标签上加个v-if"array.lenth",如果你更想保险的话使用v-if"…