原生js仿百度搜索框
来源:互联网 发布:网络与新媒体大学 编辑:程序博客网 时间:2024/06/06 08:24
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
fieldset, img, input, button {
border: none;
padding: 0;
margin: 0;
outline-style: none;
}
ul, ol {
list-style: none;
margin: 0px;
padding: 0px;
}
#box {
width: 405px;
margin: 200px auto;
position: relative;
}
#txtSearch {
float: left;
width: 300px;
height: 32px;
padding-left: 4px;
border: 1px solid #b6b6b6;
border-right: 0;
}
#btnSearch {
float: left;
width: 100px;
height: 34px;
font: 400 14px/34px "microsoft yahei";
color: white;
background: #3385ff;
cursor: pointer;
}
#btnSearch: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="box">
<input type="text" id="txtSearch">
<input type="button" value="百度一下" id="btnSearch">
</div>
<script>
//找人
var box = document.getElementById("box");
var txt = document.getElementById("txtSearch");
//模拟从后台获取到的数据
var datas = ["a", "abc", "abbbb", "abxxxx", "xyz", "abcdef", "abzzzz"];
//1.用户输入的同时 从datas中 寻找符合要求的 项目 放到一个新数组中
txt.onkeyup = function () {
var val = this.value;//获取当前文本框中的内容
//1.1从datas中 寻找符合要求的 项目 放到一个新数组中
var filterArr = [];
//1.2遍历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);
//3.改bug
//3.1根据匹配数组创建结构之前先判断一下页面上是否已经存在pop了
var popDiv = document.getElementById("pop");
if (popDiv) {
//如果进来了 说明已经有了 就要把他干掉
box.removeChild(popDiv);
}
//3.2如果没有匹配项 就不要创建pop了
if (filterArr.length === 0) {
return;
}
//3.3如果是空字符串 就不创建了
//if(val.length===0)
if (val === "") {
return;
}
//2.根据数组创建结构
var popDiv = document.createElement("div");
popDiv.id = "pop";
box.appendChild(popDiv);
var ul = document.createElement("ul");
popDiv.appendChild(ul);
//2.2根据过滤后的数组中的每一项数据创建li
for (var i = 0; i < filterArr.length; i++) {
//filterArr[i];//每一项数据
var li = document.createElement("li");
ul.appendChild(li);
li.innerText = filterArr[i];
}
};
//todo:当前li高亮用JS实现
//todo:点击后把当前li内容放到文本框中
//todo:用上下键选择内容(涉及到事件对象)(有兴趣可以研究一下)
</script>
</body>
</html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
fieldset, img, input, button {
border: none;
padding: 0;
margin: 0;
outline-style: none;
}
ul, ol {
list-style: none;
margin: 0px;
padding: 0px;
}
#box {
width: 405px;
margin: 200px auto;
position: relative;
}
#txtSearch {
float: left;
width: 300px;
height: 32px;
padding-left: 4px;
border: 1px solid #b6b6b6;
border-right: 0;
}
#btnSearch {
float: left;
width: 100px;
height: 34px;
font: 400 14px/34px "microsoft yahei";
color: white;
background: #3385ff;
cursor: pointer;
}
#btnSearch: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="box">
<input type="text" id="txtSearch">
<input type="button" value="百度一下" id="btnSearch">
</div>
<script>
//找人
var box = document.getElementById("box");
var txt = document.getElementById("txtSearch");
//模拟从后台获取到的数据
var datas = ["a", "abc", "abbbb", "abxxxx", "xyz", "abcdef", "abzzzz"];
//1.用户输入的同时 从datas中 寻找符合要求的 项目 放到一个新数组中
txt.onkeyup = function () {
var val = this.value;//获取当前文本框中的内容
//1.1从datas中 寻找符合要求的 项目 放到一个新数组中
var filterArr = [];
//1.2遍历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);
//3.改bug
//3.1根据匹配数组创建结构之前先判断一下页面上是否已经存在pop了
var popDiv = document.getElementById("pop");
if (popDiv) {
//如果进来了 说明已经有了 就要把他干掉
box.removeChild(popDiv);
}
//3.2如果没有匹配项 就不要创建pop了
if (filterArr.length === 0) {
return;
}
//3.3如果是空字符串 就不创建了
//if(val.length===0)
if (val === "") {
return;
}
//2.根据数组创建结构
var popDiv = document.createElement("div");
popDiv.id = "pop";
box.appendChild(popDiv);
var ul = document.createElement("ul");
popDiv.appendChild(ul);
//2.2根据过滤后的数组中的每一项数据创建li
for (var i = 0; i < filterArr.length; i++) {
//filterArr[i];//每一项数据
var li = document.createElement("li");
ul.appendChild(li);
li.innerText = filterArr[i];
}
};
//todo:当前li高亮用JS实现
//todo:点击后把当前li内容放到文本框中
//todo:用上下键选择内容(涉及到事件对象)(有兴趣可以研究一下)
</script>
</body>
</html>
阅读全文
0 0
- 原生js仿百度搜索框
- 仿百度的下拉菜单原生js
- 仿百度搜索框
- JS仿百度搜索自动提示框匹配查询功能
- 原生JS实现百度搜索api接口
- 仿百度联想搜索框
- 仿百度智能提示搜索框
- easyui仿百度搜索提示框
- 用jq实现仿百度搜索框
- 二五、vue仿百度搜索框
- Vue之仿百度搜索框
- 仿百度搜索代码
- Vue 仿百度搜索
- 仿百度搜索
- 仿百度等input下拉框搜索(jquery.autocomplete.js插件实现)
- 仿百度搜索输入框提示JS代码(PHP+MySql数据库版)(基于jquery.autocomplete.js插件)
- 关键词匹配搜索仿百度
- java+ztree仿百度搜索
- Python3之内置函数
- 自定义控件三部曲之动画篇(九)——联合动画的代码实现
- 2017华为机试(仿LISP字符串运算)
- C++中的const声明
- python3+eclipse+pydev环境搭建
- 原生js仿百度搜索框
- vnc
- 斐波那契数(动态规划法)
- @Scheduled 定时任务注解
- cc2541调试-头文件包含的重要性
- DelphiXE7操作sqlite数据库
- tnsnames.ora 配置 SID
- ConcurrentHashMap使用示例
- git rebase简介(基本篇)