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 相关文章推荐
Js+XML 操作
Sep 20 Javascript
学习ExtJS Window常用方法
Oct 07 Javascript
移动节点的jquery代码
Jan 13 Javascript
jQuery插件imgPreviewQs实现上传图片预览
Jan 15 Javascript
JS组件Bootstrap实现下拉菜单效果代码
Apr 26 Javascript
jquery心形点赞关注效果的简单实现
Nov 14 Javascript
js中string和number类型互转换技巧(分享)
Nov 28 Javascript
Vue.JS入门教程之事件监听
Dec 01 Javascript
javascript 面向对象实战思想分享
Sep 07 Javascript
AngualrJs清除定时器遇到的坑
Oct 13 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
Aug 24 Javascript
vue+ESLint 配置保存 自动格式化代码
Mar 17 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
在PHP中利用XML技术构造远程服务(上)
2006/10/09 PHP
php 购物车的例子
2009/05/04 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
用一段js程序来实现动画功能
2007/03/06 Javascript
JS图片预加载 JS实现图片预加载应用
2012/12/03 Javascript
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
2019/08/20 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
Python的time模块中的常用方法整理
2015/06/18 Python
在Python 3中实现类型检查器的简单方法
2015/07/03 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
python接入支付宝的实例操作
2020/07/20 Python
Intimissimi德国网上商店:意大利知名内衣品牌
2018/04/03 全球购物
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
行政部总经理岗位职责
2014/01/04 职场文书
男方父母婚礼答谢词
2014/01/25 职场文书
行政部工作岗位职责范本
2014/03/05 职场文书
运动会口号16字
2014/06/07 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
场地使用证明模板
2014/10/25 职场文书
创建文明城市倡议书
2015/04/28 职场文书