小应用--分类筛选人员

点击查看完整代码
点击查看运行

 var personArr = [
    {name: '小王', src: './img/3.png', des: '大家好我是小王', sex: 'm', age: 18}, 
    {name: '小刘', src: './img/5.png',des: '大家好我是小刘', sex: 'f', age: 23}, 
    {name: '小张', src: './img/4.png', des: '大家好我是小张', sex: 'f', age: 25}, 
    {name: '小嘉', src: './img/1.png', des: '大家好我是小贾', sex: 'm', age: 15}, 
    {name: '小飞', src: './img/2.png', des: '大家好我是小飞', sex: 'm', age: 20},
     {name: '小磊', src: './img/1.png', des: '大家好我是小磊', sex: 'm', age: 15}, 
    {name: '小李', src: './img/2.png', des: '大家好我是小李', sex: 'm', age: 20}
];

//数据渲染
	var oInput=document.getElementsByTagName("input")[0];

	var oUl=document.getElementsByTagName("ul")[0];
	var filterText="";
	var filterSex="a";

	function RanderPage(data){
		//遍历
		var htmlStr="";//字符串拼接比creatElement效率更高
		oUl.innerHTML="";
		data.forEach(function(ele,index){
			htmlStr+='<li>\
					<img src="'+ele.src+' " alt="">\
					 <p class="name">'+ele.name+'</p>\
					 <p class="des">'+ele.des+'</p>\
				</li>'
		})

		oUl.innerHTML=htmlStr;
	}

	RanderPage(personArr);





	//添加行为  
	oInput.oninput=debounce(handle,1000)//防抖
	  

	function handle(){//找到输入的数据(数据过滤)--》渲染   
		 filterText=this.value;
		 var newArr1=filterArryByText(personArr,this.value);
		 console.log(newArr1);
		 console.log(filterText);

		 // console.log(filterArryBySex(newArr1,filterSex))
		 RanderPage(filterArryBySex(newArr1,filterSex))
	}





	function filterArryByText(data,text){
     //根据文本过滤数组  纯函数 
	     if(!text){
	     	return data;
	    	 }
	     else{
	     	var newData=data.filter(function(ele,index){
		      // console.log(ele.name)

	     		 
	     			return ele.name.indexOf(text)!=-1;

	     		 
	     	})
		      // console.log(newData)

	     	return newData;
	     }

	}


		//根据性别过滤
		function filterArryBySex(data,sex){
			if(sex=="a"){
				return data;
			}else if(sex=='m'){
				return data.filter(function(ele,index){
					return ele.sex=="m" 
				})

			}else if(sex=='f'){
				return data.filter(function(ele,index){
					return ele.sex=="f" 
				})

			}

		}	





	//防抖
		function debounce(handle,delay){
				var timer=null;
				clearTimeout(timer);
				return function(e){
				    var _self=this;
				    var _arg=arguments;
					timer=setTimeout(function(){
						handle.apply(_self,_arg)
					},delay)
				}
			}


//btn style
var oBtnArr=[].slice.call(document.getElementsByClassName("btn"),0);
// console.log(oBtnArr)
var lastActiveBtn=oBtnArr[2];

	oBtnArr.forEach(function(ele,index){
		ele.onclick=function(){

			changeActive(this);
			filterSex=this.getAttribute('sex');
			var newArr2=filterArryBySex(personArr,this.getAttribute('sex'))
		       // console.log(newArr2)
		       // console.log(filterText)

		       // console.log(filterArryByText(newArr2,filterText))

			RanderPage(filterArryByText(newArr2,filterText))
		}
	})

function changeActive(dom){
	lastActiveBtn.className="btn";
	dom.className="btn active";
	lastActiveBtn=dom;

}

all—显示全部人员
在这里插入图片描述
male:筛选出男性
在这里插入图片描述
female:筛选出女性
在这里插入图片描述
根据输入文本和性别选项叠加筛选
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值