原生JS实现多条件筛选


Posted in Javascript onAugust 19, 2020

本文实例为大家分享了原生JS实现多条件筛选的具体代码,供大家参考,具体内容如下

我在学JS初始看到的教程基本都是JS二级联动查询、三级联动查询;如下图:

原生JS实现多条件筛选

但有时并不需要级联查询,如购买商品时:

原生JS实现多条件筛选

今天我以慕课网前端样式作为参考做了下面的Demo,基于原生JS

<div id="direction">
 <strong>方向:</strong>
 <span class="active">全部</span>
 <span>前端</span>
 <span>后台</span>
 <span>数据库</span>
 <span>UI设计</span>
</div>
<div id="category">
 <strong>分类:</strong>
 <span class="active">全部</span>
 <span>HTML/CSS</span>
 <span>JavaScript</span>
 <span>jQuery</span>
 <span>Python</span>
 <span>Java</span>
 <span>AngularJS</span>
</div>
<div id="type">
 <strong>类型:</strong>
 <span class="active">全部</span>
 <span>基础</span>
 <span>案例</span>
 <span>框架</span>
 <span>工具</span>
</div>
<strong>返回值:</strong>
<p id="Res"></p>
<style>
 span{display: inline-block;
  cursor: pointer; padding: 8px; border: 1px solid #999;}
 span.active{
  background-color: #c14d00;
 }
</style>
<script>
 var dSpan = document.getElementById('direction').getElementsByTagName('span');
 var cSpan = document.getElementById('category').getElementsByTagName('span');
 var tSpan = document.getElementById('type').getElementsByTagName('span');
 var aSpan = document.getElementsByTagName('span');
 var oDirection = document.getElementById('direction');
 var oCategory = document.getElementById('category');
 var oType = document.getElementById('type');
 var oRes = document.getElementById('Res');
 dSpan[0].className = 'active';
 cSpan[0].className = 'active';
 tSpan[0].className = 'active';
 for(var i=0; i<aSpan.length; i++){
  aSpan[i].onclick = function(){
   var siblings = this.parentNode.children;
   for(var j=0; j<siblings.length; j++){
    siblings[j].className = '';
   }
   this.className = 'active';
   if(this.parentNode == oDirection || this.parentNode == oCategory || this.parentNode == oType){
    returnRes();
   }
  }
 }

 function returnRes(){
  var o1 = 0, o2 = 0, o3 = 0;
  for(var i=0; i<dSpan.length; i++){
   if(dSpan[i].className == 'active'){
    o1 = i;
   }
  }
  for(var i=0; i<cSpan.length; i++){
   if(cSpan[i].className == 'active'){
    o2 = i;
   }
  }
  for(var i=0; i<tSpan.length; i++){
   if(tSpan[i].className == 'active'){
    o3 = i;
   }
  }
  oRes.innerHTML = (dSpan[o1].innerHTML + "," + cSpan[o2].innerHTML + "," + tSpan[o3].innerHTML);
 }
</script>

最后附上效果图:

原生JS实现多条件筛选

注:本篇博文是 【无条件】的分类筛选

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用JS操作页面表格,元素的一些技巧
Feb 02 Javascript
javascript深入理解js闭包
Jul 03 Javascript
JavaScript Accessor实现说明
Dec 06 Javascript
JS 无限级 Select效果实现代码(json格式)
Aug 30 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
Jun 10 Javascript
JS对象与json字符串格式转换实例
Oct 28 Javascript
JavaScript中的return语句简单介绍
Dec 07 Javascript
Extjs实现下拉菜单效果
Apr 01 Javascript
vue 通过下拉框组件学习vue中的父子通讯
Dec 19 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
Mar 06 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
Mar 06 Javascript
node.js使用yargs处理命令行参数操作示例
Feb 11 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
Aug 19 #Javascript
微信小程序通过websocket实时语音识别的实现代码
Aug 19 #Javascript
JS实现炫酷雪花飘落效果
Aug 19 #Javascript
javascript实现雪花飘落效果
Aug 19 #Javascript
js实现直播点击飘心效果
Aug 19 #Javascript
js实现鼠标点击飘爱心效果
Aug 19 #Javascript
Vue环境搭建+VSCode+Win10的详细教程
Aug 19 #Javascript
You might like
网友原创的PHP模板类代码
2008/09/07 PHP
php 字符串函数收集
2010/03/29 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
PHP中使用虚代理实现延迟加载技术
2014/11/05 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
实例解析php的数据类型
2018/10/24 PHP
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
2011/03/25 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
js 弹出虚拟键盘修改密码的简单实例
2016/10/10 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
微信小程序通过保存图片分享到朋友圈功能
2018/05/24 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
python梯度下降算法的实现
2020/02/24 Python
使用python对excel表格处理的一些小功能
2021/01/25 Python
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
个人汇报材料范文
2014/12/30 职场文书
毕业赠语大全
2015/06/23 职场文书
公司管理建议书
2015/09/14 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
浅谈Nginx 中的两种限流方式
2021/03/31 Servers
浅谈怎么给Python添加类型标注
2021/06/08 Python
Python函数式编程中itertools模块详解
2021/09/15 Python
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS