仿百度搜索框

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

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.实现效果:

猜你喜欢

转载自blog.csdn.net/qq_40513088/article/details/84930448