原生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 相关文章推荐
JQuery中$.ajax()方法参数详解及应用
Dec 12 Javascript
jQuery中大家不太了解的几个方法
Mar 04 Javascript
Javascript打印局部页面实例
Jun 21 Javascript
表单元素值获取方式js及java方式的简单实例
Oct 15 Javascript
详解Weex基于Vue2.0开发模板搭建
Mar 20 Javascript
ng-events类似ionic中Events的angular全局事件
Sep 05 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
Sep 08 Javascript
javascript动态创建对象的属性详解
Nov 07 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
Nov 20 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
Jul 29 Javascript
layui lay-verify form表单自定义验证规则详解
Sep 18 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
Feb 06 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
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
javascript中FOREACH数组方法使用示例
2016/03/01 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
python 打印对象的所有属性值的方法
2016/09/11 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
劳资专员岗位职责
2013/12/27 职场文书
初中数学教学反思
2014/01/16 职场文书
超市后勤自我鉴定
2014/01/17 职场文书
大学生职业生涯规划书模板
2014/01/18 职场文书
摄影助理岗位职责
2014/02/07 职场文书
护理中职生求职信范文
2014/02/24 职场文书
个人委托书
2014/07/31 职场文书
2014年网管工作总结
2014/12/11 职场文书
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL