原生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 相关文章推荐
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
Jan 23 Javascript
javaScript如何生成xmlhttp
Dec 16 Javascript
jQuery新的事件绑定机制on()示例应用
Jul 18 Javascript
jquery 判断selection range 是否在容器中的简单实例
Aug 02 Javascript
JS 实现计算器详解及实例代码(一)
Jan 08 Javascript
使用JavaScriptCore实现OC和JS交互详解
Mar 28 Javascript
js实现图片加载淡入淡出效果
Apr 07 Javascript
JavaScript创建对象的七种方式全面总结
Aug 21 Javascript
vue利用axios来完成数据的交互
Mar 23 Javascript
JS实现前端页面的搜索功能
Jun 12 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
Oct 24 Javascript
Angular4.0动画操作实例详解
May 10 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通过COM类调用组件的实现代码
2012/01/11 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
Laravel 连接(Join)示例
2019/10/16 PHP
flexigrid 参数说明
2010/11/23 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
js 编码转换 gb2312 和 utf8 互转的2种方法
2013/08/07 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
2016/06/17 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
JavaScript实现简单音乐播放器
2020/04/17 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
js编写简易的计算器
2020/07/29 Javascript
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
详解Python中的日志模块logging
2015/06/19 Python
使用Python3 编写简单信用卡管理程序
2016/12/21 Python
Python操作SQLite/MySQL/LMDB数据库的方法
2019/11/07 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
2020/07/03 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
Elemental Herbology官网:英国美容品牌
2019/04/27 全球购物
一些高难度的SQL面试题
2016/11/29 面试题
先进班级集体事迹材料
2014/01/30 职场文书
春节联欢晚会主持词
2014/03/24 职场文书
买卖协议书范本
2014/04/21 职场文书
安全环保标语
2014/06/09 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
保研专家推荐信范文
2015/03/25 职场文书
企业愿景口号
2015/12/25 职场文书
Java使用Unsafe类的示例详解
2021/09/25 Java/Android