首页 > web前端 > js教程 > 正文

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

php是最好的语言
发布: 2018-08-01 10:40:54
原创
2136人浏览过

本文介绍如何使用原生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结构:

<body>
    <p class="wrapper">
        <p class="search">
            <input type="text" placeholder="请输入用户名" id="input">
            <ul id="searchUl">
                <li class="active" sex = "all">All</li>
                <li sex = "male">Male</li>
                <li sex = "female">Female</li>
            </ul>
        </p>
        <p class="userList">
            <ul id="list">
                <!-- 方便确定插入数据的结构和样式 -->
                <!-- <li>@@##@@
                    <span class="name">小航</span>
                    <span class="des">描述</span>
                </li> -->
            </ul>
        </p>
    </p>

    <script src="./searchingData.js"></script>
</body>
登录后复制

思路及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 += '<li>@@##@@\
        <span class="name">'+ ele.name +'</span>\
        <span class="des">'+ ele.des +'</span></li>';
    });
    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触发

//绑定点击事件
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视频教程

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

以上就是案例详解_使用javascript编写用户列表组合条件筛选的详细内容,更多请关注php中文网其它相关文章!

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

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

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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