仿百度搜索框

news/2024/7/19 13:29:09 标签: JS

仿百度搜索框自动补充搜索内容实现过程:

1.设置图片和搜索框两个div

<div id="img">
	<img src="img/baidu.png">
</div>
<div id="box">
	<input type="text" id="textSearch">
	<input type="button" value="百度一下" id="buttonSearch">
</div>

2.图片和搜索框的css样式:

    fieldset,input,button,img{
		border: none;
		padding: 0px;
		margin: 0px;
		outline-style: none;
	}

	ul,ol{
		list-style: none;
		margin: 0px;
		padding: 0px;
	}

	#img{
		width: 405px;
		height: 200px;
		margin: 0 490px;
		margin-top: 100px;
	}

	#box{
		width: 405px;
		margin: 300px auto;
		margin-top: 100px;
		position: relative;
	}

	#textSearch{
		float: left;
		width: 300px;
		height: 32px;
		padding-left: 4px;
		border: 1px solid #b6b6b6;
		border-right: 0;
	}

	#buttonSearch{
		float: left;
		width: 100px;
		height: 34px;
		font: 400 14px/34px "雅黑";
		color: white;
		background: #3385ff;
		cursor: pointer;
	}

	#buttonSearch:hover{
		background: #317ef3;
	}

	#pop {
        width: 303px;
        border: 1px solid #ccc;
        padding: 0px;
        position: absolute;
        top: 34px;
    }


    #pop ul li {
        padding-left: 5px;
    }


    #pop ul li:hover {
        background-color: #CCC;
    }

3.JS实现搜索自动补充:

	//获取对象
	var box = document.getElementById("box");
	var text = document.getElementById("textSearch");
	//模拟从后台获取到数据
	var datas = ["a","ab","abc","abcd","mdzz","abcdefg"];
	//用户输入时从datas中寻找符合要求的项目存放到一个新数组中
	text.onkeyup = function () {
		//获取当前文本框中的内容
		var val = this.value;
		//从datas中寻找符合要求的项目存放到一个新的数组中
		var filterArr = [];
		//遍历datas里的每一项,判断是否符合要求,如果符合要求datas中
		for (var i = 0; i < datas.length; i++) {
			var data = datas[i];
			//判断每一个data是否以当前的val开头
			if (data.indexOf(val) == 0)  {  //如果符合要求
				filterArr.push(data);
			}
		}
		console.log(filterArr);
	//根据匹配数组创建结构之前判断一下页面上是否已经存在pop
	var popDiv = document.getElementById("pop");
        if (popDiv) {
            //如果进来了说明已经有了就要把他清除
            box.removeChild(popDiv);
        }
        //如果没有匹配项 就不要创建pop
        if (filterArr.length === 0) {
            return;
        }
        //如果是空字符串 就不创建了
        //if(val.length===0)
        if (val === "") {
            return;
        }
        //根据数组创建结构
        var popDiv = document.createElement("div");
        popDiv.id = "pop";
        box.appendChild(popDiv);
        var ul = document.createElement("ul");
        popDiv.appendChild(ul);
        //根据过滤后的数组中的每一项数据创建li
        for (var i = 0; i < filterArr.length; i++) {
            //filterArr[i];//每一项数据
            var li = document.createElement("li");
            ul.appendChild(li);
            li.innerText = filterArr[i];
        }
    };

4.具体实现代码:

<!DOCTYPE html>
<html>
<head>
	<title>仿百度搜索框</title>
	<style>
		fieldset,input,button,img{
			border: none;
			padding: 0px;
			margin: 0px;
			outline-style: none;
		}

		ul,ol{
			list-style: none;
			margin: 0px;
			padding: 0px;
		}

		#img{
			width: 405px;
			height: 200px;
			margin: 0 490px;
			margin-top: 100px;
		}

		#box{
			width: 405px;
			margin: 300px auto;
			margin-top: 100px;
			position: relative;
		}

		#textSearch{
			float: left;
			width: 300px;
			height: 32px;
			padding-left: 4px;
			border: 1px solid #b6b6b6;
			border-right: 0;
		}

		#buttonSearch{
			float: left;
			width: 100px;
			height: 34px;
			font: 400 14px/34px "雅黑";
			color: white;
			background: #3385ff;
			cursor: pointer;
		}

		#buttonSearch:hover{
			background: #317ef3;
		}

		#pop {
            width: 303px;
            border: 1px solid #ccc;
            padding: 0px;
            position: absolute;
            top: 34px;
        }


        #pop ul li {
            padding-left: 5px;
        }


        #pop ul li:hover {
            background-color: #CCC;
        }
	</style>
</head>
<body>
	<div id="img">
		<img src="img/baidu.png">
	</div>
	<div id="box">
		<input type="text" id="textSearch">
		<input type="button" value="百度一下" id="buttonSearch">
	</div>

	<script>
	//获取对象
	var box = document.getElementById("box");
	var text = document.getElementById("textSearch");
	//模拟从后台获取到数据
	var datas = ["a","ab","abc","abcd","mdzz","abcdefg"];
	//用户输入时从datas中寻找符合要求的项目存放到一个新数组中
	text.onkeyup = function () {
		//获取当前文本框中的内容
		var val = this.value;
		//从datas中寻找符合要求的项目存放到一个新的数组中
		var filterArr = [];
		//遍历datas里的每一项,判断是否符合要求,如果符合要求datas中
		for (var i = 0; i < datas.length; i++) {
			var data = datas[i];
			//判断每一个data是否以当前的val开头
			if (data.indexOf(val) == 0)  {  //如果符合要求
				filterArr.push(data);
			}
		}
		console.log(filterArr);
	//根据匹配数组创建结构之前判断一下页面上是否已经存在pop
	var popDiv = document.getElementById("pop");
        if (popDiv) {
            //如果进来了说明已经有了就要把他清除
            box.removeChild(popDiv);
        }
        //如果没有匹配项 就不要创建pop
        if (filterArr.length === 0) {
            return;
        }
        //如果是空字符串 就不创建了
        //if(val.length===0)
        if (val === "") {
            return;
        }
        //根据数组创建结构
        var popDiv = document.createElement("div");
        popDiv.id = "pop";
        box.appendChild(popDiv);
        var ul = document.createElement("ul");
        popDiv.appendChild(ul);
        //根据过滤后的数组中的每一项数据创建li
        for (var i = 0; i < filterArr.length; i++) {
            //filterArr[i];//每一项数据
            var li = document.createElement("li");
            ul.appendChild(li);
            li.innerText = filterArr[i];
        }
    };
	</script>
</body>
</html>

5.实现效果:


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

相关文章

吞吐量达到瓶颈后下降_无需人工干预,如何找到Kafka集群的吞吐量极限?

作者&#xff5c;Peng Kang 译者&#xff5c;阿拉丁 编辑&#xff5c;Debra AI 前线导读&#xff1a;Kafka 是非常流行的分布式流式处理和大数据消息队列解决方案&#xff0c;在技术行业已经得到了广泛采用&#xff0c;在 Dropbox 也不例外。Kafka 在 Dropbox 的很多分布式系统…

JS实现购物车

JS实现购物车 1.实现思路&#xff1a; &#xff08;1&#xff09;在body中定义一个id"list",将所有商品存放在一个列表中&#xff0c;当进入购物车时如果有两个商品被勾选了&#xff0c;需要计算出总共的价钱和商品的件数以及最贵的商品价格&#xff1b; &#xf…

学什么就业前景好的专业_8大类专业中就业前景好的10个专业,赶紧收藏起来

大学里哪些专业就业前景好、比较“热门”是广大考生和家长朋友们十分关心的问题&#xff0c;但是这么多专业和院校怎么选择呢&#xff1f;其实就业前景好的专业和国家发展现状离不开的&#xff0c;计算机、机械、电气、土木、医学等专业就业都是非常不错的&#xff0c;以下是为…

JS实现页面刷新的方法

1.JS实现普通页面刷新 测试页面&#xff1a; <!DOCTYPE html> <html> <head><title>页面刷新</title> </head> <body><h1 id"text">页面刷新</h1><button onclick"fresh()">刷新</butto…

非橙勿扰_非”橙“勿扰,可甜可盐的橙色系家居来了

橙色&#xff0c;是电磁波的可视光部分中的长波&#xff0c;界于红色和黄色之间的混合色。它是暖色系中最温暖的颜色&#xff0c;总是能给人种种温暖的情绪&#xff0c;枫叶的绚烂、橙子的甘香、麦田的丰盈、夕阳余晖的温暖......而属于橙色系的颜色也有很多&#xff0c;包括橘…

最大子段和问题蛮力法、分治法、动态规划法(C/C++)

最大子段和问题&#xff08;C/C&#xff09; 一、蛮力法 #include<iostream> using namespace std; int MaxSum(int a[], int n) {int i,j;int maxSum 0;for(i 0; i < n; i){int sum 0;for(j i; j < n; j){sum a[j];if(sum > maxSum){maxSum sum;}}}ret…

假币问题(C/C++)

假币问题 1.已知假币比真币轻 #include<iostream> using namespace std; const int N8; int a[N]{2,2,1,2,2,2,2,2}; int Coin(int low,int high,int n) {int i,num1,num2,num3;int add10,add20;if(n1)return low1;if(n%30)num1num2n/3;elsenum1num2n/31;num3n-num1-n…

syb需求分析问卷_暑期活动|校内SYB创业培训

点击蓝字关注我们暑期SYB创业培训2019年7月至8月我校利用暑假期间开展了SYB创业培训&#xff0c;本次SYB创业培训航空工程学院有67位同学参加了本次创业培训。本次培训分为两个时间段&#xff1a;7月12日至21日&#xff0c;8月22日至31日。SYB培训其目的是加深大家对创业了解&a…