原生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 相关文章推荐
一个判断email合法性的函数[非正则]
Dec 09 Javascript
js保留小数点后几位的写法
Jan 03 Javascript
JavaScript极简入门教程(一):基础篇
Oct 25 Javascript
JsRender实用入门教程
Oct 31 Javascript
js 打开新页面在屏幕中间的实现方法
Nov 02 Javascript
微信小程序 获取相册照片实例详解
Nov 16 Javascript
JS实现课堂随机点名和顺序点名
Mar 09 Javascript
angular4模块中给标签添加背景图的实现方法
Sep 15 Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
Feb 21 Javascript
微信小程序 下拉刷新及上拉加载原理解析
Nov 06 Javascript
解决vue的touchStart事件及click事件冲突问题
Jul 21 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
Sep 12 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数据库备份还原类分享
2014/03/20 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
控制页面按钮在后台执行期间不重复提交的JS方法
2013/06/24 Javascript
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
原生JS轮播图插件
2017/02/09 Javascript
Angular 4.X开发实践中的踩坑小结
2017/07/04 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
vue使用require.context实现动态注册路由
2020/12/25 Vue.js
python批量修改文件后缀示例代码分享
2013/12/24 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
详解Python3 基本数据类型
2019/04/19 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
解决Django no such table: django_session的问题
2020/04/07 Python
Python虚拟环境venv用法详解
2020/05/25 Python
Django def clean()函数对表单中的数据进行验证操作
2020/07/09 Python
Python代码注释规范代码实例解析
2020/08/14 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
授权委托书样本
2014/04/03 职场文书
班主任新年寄语
2014/04/04 职场文书
房产买卖委托公证书
2014/04/04 职场文书
师德师风自查材料
2014/10/14 职场文书
2014流动人口计划生育工作总结
2014/12/20 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android