很常见的搜索框,很常用,总结一下,怕自己忘了,使用的是原生的js。
这是原生写的,代码很简单,重要是思路。主要就是用了一个indexOf(),很简单。越简单的东西越难想到,很多人都会想到用正则去做,这样就舍近求远了。
html部分:
<div >
<input type="text" >
<input type="button" >
</div>
javascript部分:
//创建假数据 var array=["aaa","abc","aab","acc","bcc","caa"];
// 判断id为pop的div是否存在如果存在应删除 ===========> 感谢 盛夏的永夜 的提醒
if (document.getElementById("pop")) {
divBox.removeChild(document.getElementById("pop"));
}
获取文本框注册keyup事件
document.getElementById('txt').onkeyup=function(){
var divBox = document.getElementById('box');
//临时数组
var tmpArray = [];
//获取数据源中的每一条数据
for(var i=0;i<array.length;i++){
//找到以你输入的内容为开头的所有数据
if(array[i].indexOf(this.value) === 0){
//将找到的数据push到临时数组中
tmpArray.push(array[i]);
}
}
//临时数组为空时,不新建显示框
if(tmpArray.length === 0){return;}
//如果搜索框没有值时也不新建显示框
if(this.value.length === 0){
//如果此时已经有了显示框,应该除去
if(document.getElementById("pop")){
divBox.removeChild(document.getElementById("pop"));
}
return;
}
//临时数组有数据
var dvObj = document.creatElement("div");
dvObj.id = "pop";
//将div添加到box中
divBox.appendChild(dvObj);
var ulObj=document.createElement("ul");
//将ul添加到dvObj中
dvObj.appendChild(ulObj);
//遍历临时数组,动态创建li
for(var i = 0;i<tmpArray.length;i++){
var liObj = document.createElement("li");
//将tr添加到ulObj中
ulObj.appendChild(liObj);
//将临时数组中的数据添加到li中
setinnerText(liObj,tmpArray[i]);
}
}
css的样式没有写肯定会有问题,只能留给你们了,都写完了,就没意思了。我是一个喜欢留坑的人。