javascript实现搜索筛选功能实例代码


Posted in Javascript onNovember 12, 2020

案例样式即功能

javascript实现搜索筛选功能实例代码

HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="index.css">
  <title>Document</title>
</head>
<body>
  <div class="wrapper">
    <div class="search">
      <input type="text" placeholder="请输入用户名">//搜索框
      <p>//性别筛选按钮
        <span sex='m'>male</span>
        <span sex='f'>female</span>
        <span sex='a' class="active">all</span>
      </p>
    </div>
    <div class="user-list">//搜索列表,有js渲染添加
      <ul>
      </ul>
    </div>
  </div>
  <script src="index.js"></script>
</body>
</html>

CSS代码:

*{
  margin:0;
  padding:0;
  list-style: none;
}
.wrapper{
  width:400px;
  border:1px solid #ccc;
  margin: 100px auto;
  border-radius:4px;
}
.wrapper .search{
  width:100%;
  height:50px;
  line-height:50px;
}
.wrapper .search input{
  padding:10px 15px;
  border-radius:4px;
  margin-left:30px;
  border:1px solid #ccc;
  outline:none;

}
.wrapper .search p{
  display:inline-block;
}
.wrapper .search p span{
  color:#38f;
  padding:3px 5px;
}
.wrapper .search p span.active{
  color:#fff;
  background-color:#38f;
  border-radius: 4px;
}
.wrapper .user-list{
  width:100%;
}
.wrapper .user-list ul{
  width:100%;
}
.wrapper .user-list ul li{
  border-bottom:1px solid #ccc;
  position:relative;
  padding:10px 0;
  margin:0 30px;
}
.wrapper .user-list ul li img{
  height:40px;
  width:40px;
  position:absolute;
}
.wrapper .user-list ul li p{
  margin-left:50px;
  width:300px;
  color:rgb(117, 114, 114);
}

Javascript代码:

var oul=document.getElementsByTagName("ul")[0];
var oinput=document.getElementsByTagName("input")[0];
var text='',sex='a';//要将text和sex写在全局变量里面,这样可以记录上次操作的值为后续的页面渲染作准备;
var personArr=[
  {name:'王刚',src:'images/1.png',des:'颈椎不好',sex:'m'},
  {name:'刘颖',src:'images/2.png',des:'我是谁',sex:'f'},
  {name:'王秀英',src:'images/3.jpg',des:'我很好看',sex:'f'},
  {name:'刘金磊',src:'images/4.png',des:'你没有见过陌生人的脸',sex:'m'},
  {name:'刘飞仙',src:'images/5.jpg',des:'瓜皮刘',sex:'m'}
];
//页面渲染
function randerlist(arr){
  var str='';
  arr.forEach(function(elem,index){
    str+='<li>\
    <img src="'+elem.src+'">\
    <p class="username">'+elem.name+'</p>\
    <p class="des">'+elem.des+'</p>\
  </li>'
  });
  oul.innerHTML=str;
}
randerlist(personArr);
//为性别筛选按钮设置点击事件,并获取每一次点击后的结果进行页面渲染。
var spans=document.getElementsByTagName("p")[0].children;
for(var i=0;i<spans.length;i++){
  (function(j){
    spans[j].onclick=function(){
      //每点击一个按钮就要重新设置css属性
      for(var k=0;k<spans.length;k++){
        spans[k].className="";
      }
      this.className='active';
      /*不要直接var lastArr=filterSex(this.innerHTML[0],personArr);,一定要写sex=this.innerHTML[0];
      因为当点击了性别筛选按钮并输入姓名之后进行了一次渲染,再次删除姓名此时text=‘',需要重新渲染,但并没有记
      录上次点击性别筛选按钮后的sex值,此时他会默认为'a';*/
      sex=this.innerHTML[0];
      var lastArr=filterSex(sex,personArr);
      lastArr=filterText(text,lastArr);
      randerlist(lastArr);
    }
  })(i);
}
//获取搜索框内容,并重新渲染
oinput.oninput=function(){
  text=this.value;
  var newArr=filterText(text,personArr);
  newArr=filterSex(sex,newArr);
  randerlist(newArr);
}
//根据文本框的内容进行筛选,并返回筛选后的数组
function filterText(text,arr){
  //filter函数,筛选作用,将return true的elem拼成一个数组并返回
  return arr.filter(function(elem,index){
    if(elem.name.indexOf(text)!=-1){
      return true;
    }else{
      return false;
    }
  });
}
//根据性别进行筛选,并返回筛选后的数组
function filterSex(sex,arr){
    if(sex=='a'){
      return arr;
    }else{
      return arr.filter(function(elem,index){
        if(elem.sex==sex){
          return true;
        }else{
          return false;
        }
      })
    }
}

总结

到此这篇关于javascript实现搜索筛选功能的文章就介绍到这了,更多相关javascript搜索筛选功能内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript中this关键字使用方法详解
Mar 08 Javascript
THREE.JS入门教程(6)创建自己的全景图实现步骤
Jan 25 Javascript
append和appendTo的区别以及appendChild用法
Dec 24 Javascript
js 触发select onchange事件代码
Mar 20 Javascript
from表单多个按钮提交用onclick跳转不同action
Apr 24 Javascript
上传图片js判断图片尺寸和格式兼容IE
Sep 01 Javascript
HTML,CSS,JavaScript速查表推荐
Dec 02 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
Jul 27 Javascript
纯javascript移动优先的幻灯片效果
Nov 02 Javascript
基于JS实现数字+字母+中文的混合排序方法
Jun 06 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
Mar 28 Javascript
js实现自定义右键菜单
May 18 Javascript
vue实现两个组件之间数据共享和修改操作
Nov 12 #Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
Nov 12 #Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
Nov 12 #Javascript
详解ES6 扩展运算符的使用与注意事项
Nov 12 #Javascript
在vue中使用image-webpack-loader实例
Nov 12 #Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
Nov 12 #Javascript
JavaScript ES 模块的使用
Nov 12 #Javascript
You might like
第一个无线电台是由谁发明的
2021/03/01 无线电
php木马webshell扫描器代码
2012/01/25 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
php遍历CSV类实例
2015/04/14 PHP
php类的定义与继承用法实例
2015/07/07 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
优化JavaScript脚本的性能的几个注意事项
2006/12/22 Javascript
jquery验证表单中的单选与多选实例
2013/08/18 Javascript
extjs 分页使用jsp传递数据示例
2014/07/29 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
JSONP跨域请求实例详解
2016/07/04 Javascript
js html5 css俄罗斯方块游戏再现
2016/10/17 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
vue.js 子组件无法获取父组件store值的解决方式
2019/11/08 Javascript
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
2014/01/19 Python
Python的Flask框架的简介和安装方法
2015/11/13 Python
Python实现读取文件最后n行的方法
2017/02/23 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
2019/08/12 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
机电一体化职业规划书
2014/01/07 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
报到证办理个人委托书
2014/10/06 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
违纪检讨书
2015/01/27 职场文书
政审证明材料
2015/06/19 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
三好学生竞选稿范文
2019/08/21 职场文书