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小游戏实现代码
Aug 19 Javascript
JQuery入门—编写一个简单的JQuery应用案例
Jan 03 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
Jan 29 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
May 17 Javascript
基于javascript实现根据身份证号码识别性别和年龄
Jan 22 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
Sep 23 Javascript
详解jQuery中关于Ajax的几个常用的函数
Jul 17 jQuery
vue实现仿淘宝结账页面实例代码
Nov 08 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
Feb 10 Javascript
详解Angular cli配置过程记录
Nov 07 Javascript
vue实现将一个数组内的相同数据进行合并
Nov 07 Javascript
jQuery实现王者荣耀手风琴效果
Jan 17 jQuery
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
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
php中apc缓存使用示例
2013/12/25 PHP
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
JS定时器用法分析【时钟与菜单中的应用】
2016/12/21 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
分享vue里swiper的一些坑
2018/08/30 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python 数据结构之队列的实现
2017/01/22 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
OpenCV中VideoCapture类的使用详解
2020/02/14 Python
草莓网官网:StrawberryNET
2019/08/21 全球购物
介绍一下常见的木马种类
2014/11/15 面试题
为什么需要版本控制
2016/10/28 面试题
新疆民族团结演讲稿
2014/08/27 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
《鲁滨逊漂流记》之六读后感(4篇)
2019/09/29 职场文书