0

0

案例详解_使用javascript编写用户列表组合条件筛选

php是最好的语言

php是最好的语言

发布时间:2018-08-01 10:40:54

|

2177人浏览过

|

来源于php中文网

原创

本文介绍如何使用原生js编写用户列表组合条件筛选?可以通过按钮和输入文字进行组合条件筛选的功能,以下用代码将详细介绍,先上一张效果图:

1.png 这里使用数组模拟后台数据(可用ajax请求后台数据):

var person = [
    { name: '王小妹', src: '01pic.jpg', sex: 'male', des: '漂亮的妹子'},
    { name: '金小妹', src: '02pic.jpg', sex: 'male', des: '漂亮的程序媛'},
    { name: '陈小华', src: '07pic.jpg', sex: 'female', des: '相互学习'},
    { name: '马爱国', src: '08pic.jpg', sex: 'female', des: '喜欢猫'},
    { name: '邓小茜', src: '04pic.jpg', sex: 'male', des: '喜欢运动'},
    { name: '马学习', src: '06pic.jpg', sex: 'female', des: '喜欢看书'}
]

主要html结构:


    

  • All
  • Male
  • Female

思路及js核心代码:

1)渲染dom结构:使用forEach()方法遍历数组,找出符合条件的数据,有几条数据就生成几个li结构代码块,然后把生成的li结构插入ul中去;

var listUl = document.getElementById('list');
var oInp = document.getElementById('input');
var sUl = document.getElementById('searchUl');


//渲染dom结构,遍历数组使用forEach()方法
function render(list){
    var str = '';
    list.forEach(function(ele, index){
        str += '
  • \ '+ ele.name +'\ '+ ele.des +'
  • '; }); listUl.innerHTML = str; }

    2)单一输入框文字筛选:获取input输入框输入的值,绑定一个oninput事件,使用使用数组过滤筛选方法filter()进行文本过滤;

    立即学习Java免费学习笔记(深入)”;

    //获取input输入的value值,需绑定一个oninput事件,获取过滤结果后渲染
    oInp.oninput = function(){
        var text = this.value; 
        //state.text = this.value; //组合条件筛选
        render(filterText(text, person)); //单一筛选、渲染
        //render(addFn(filterFn,person)); //组合条件筛选、渲染
    }
    
    //输入文本过滤
    function filterText(val, arr){
        var fArr = arr.filter(function(ele, index){
            if(ele.name.indexOf(val) !== -1){
                return true;
            }
        })
        return fArr;
    }

    3)单一点击按钮筛选:点击事件绑定在ul上,由li触发

    论论App
    论论App

    AI文献搜索、学术讨论平台,涵盖了各类学术期刊、学位、会议论文,助力科研。

    下载
    //绑定点击事件
    sUl.addEventListener('click', function(e){
        if(e.target.tagName == 'LI'){
            var sex = e.target.getAttribute('sex');
            //state.sex = e.target.getAttribute('sex'); //组合条件筛选
            document.getElementsByClassName('active')[0].className = ''; //修改点击按钮的样式
            e.target.className = 'active'; //修改点击按钮的样式
            render(filterSex(sex, person));
            //render(addFn(filterFn,person));//组合条件筛选、渲染
        }
    })
    
    //点击按钮筛选
    function filterSex(sex, arr){
        if(sex == 'all'){
            return arr;
        }else{
            var sArr = arr.filter(function(ele, index){
                if(sex == ele.sex){
                    return true;
                }
            })
            return sArr;
        }
    }

    4)组合条件筛选:通过两个对象的prop把组合对象(输入框和按钮)和筛选函数联系起来

    //组合筛选,在一个筛选结果的基础上筛选(修改传入数组arr),参数lastArr上一次筛选返回的数组
    
    //筛选条件:实现筛选条件的函数
    var filterFn = {
        text: filterText,
        sex: filterSex
    }
    
    //筛选条件:之前的筛选的值text、sex 要改为 state.text state.sex
    var state = {
        text: '',
        sex: 'all'
    }
    
    //组合
    function addFn(obj, arr){
        var lastArr = arr;
        for(var prop in obj){
            lastArr = obj[prop](state[prop], lastArr);
            console.log(lastArr);
        }
        return lastArr;
    }

     相关文章:

    JavaScript前端数据多条件筛选功能实现代码

    JavaScript实现前端数据多条件筛选功能的实例

    相关视频:

    使用JavaScript-李炎恢Javascript视频教程

    相关文章

    java速学教程(入门到精通)
    java速学教程(入门到精通)

    java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    通义千问
    通义千问

    阿里巴巴推出的全能AI助手

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

    更多
    2026赚钱平台入口大全
    2026赚钱平台入口大全

    2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

    33

    2026.01.31

    高干文在线阅读网站大全
    高干文在线阅读网站大全

    汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

    32

    2026.01.31

    无需付费的漫画app大全
    无需付费的漫画app大全

    想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

    36

    2026.01.31

    漫画免费在线观看地址大全
    漫画免费在线观看地址大全

    想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

    7

    2026.01.31

    漫画防走失登陆入口大全
    漫画防走失登陆入口大全

    2026最新漫画防走失登录入口合集,汇总多个稳定可用网址,助你畅享高清无广告漫画阅读体验。阅读专题下面的文章了解更多详细内容。

    11

    2026.01.31

    php多线程怎么实现
    php多线程怎么实现

    PHP本身不支持原生多线程,但可通过扩展如pthreads、Swoole或结合多进程、协程等方式实现并发处理。阅读专题下面的文章了解更多详细内容。

    1

    2026.01.31

    php如何运行环境
    php如何运行环境

    本合集详细介绍PHP运行环境的搭建与配置方法,涵盖Windows、Linux及Mac系统下的安装步骤、常见问题及解决方案。阅读专题下面的文章了解更多详细内容。

    0

    2026.01.31

    php环境变量如何设置
    php环境变量如何设置

    本合集详细讲解PHP环境变量的设置方法,涵盖Windows、Linux及常见服务器环境配置技巧,助你快速掌握环境变量的正确配置。阅读专题下面的文章了解更多详细内容。

    0

    2026.01.31

    php图片如何上传
    php图片如何上传

    本合集涵盖PHP图片上传的核心方法、安全处理及常见问题解决方案,适合初学者与进阶开发者。阅读专题下面的文章了解更多详细内容。

    2

    2026.01.31

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Bootstrap 5教程
    Bootstrap 5教程

    共46课时 | 3.1万人学习

    AngularJS教程
    AngularJS教程

    共24课时 | 3.2万人学习

    国外Web开发全栈课程全集
    国外Web开发全栈课程全集

    共12课时 | 1.0万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号