原生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 创建Dom元素
May 07 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
Dec 02 Javascript
jQuery Migrate 1.1.0 Released 注意事项
Jun 14 Javascript
推荐5 个常用的JavaScript调试技巧
Jan 08 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
Apr 06 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
Oct 21 Javascript
详解vue2.0脚手架的webpack 配置文件分析
May 27 Javascript
详解Angular的8个主要构造块
Jun 20 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
Nov 09 jQuery
angular中子控制器向父控制器传值的实例
Oct 08 Javascript
记一次用ts+vuecli4重构项目的实现
May 21 Javascript
jquery实现简单每周轮换的日历
Sep 10 jQuery
微信小程序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
在任意字符集下正常显示网页的方法一
2007/04/01 PHP
php学习之运算符相关概念
2011/06/09 PHP
PHP防CC攻击实现代码
2011/12/29 PHP
解析smarty模板中类似for的功能实现
2013/06/18 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
2013/06/20 PHP
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
ini_set的用法介绍
2014/01/07 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
DEFER怎么用?
2006/07/01 Javascript
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
Javascript的闭包
2009/12/31 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
微信小程序访问node.js接口服务器搭建教程
2017/04/25 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
2018/05/29 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
Python实现直播推流效果
2019/11/26 Python
python实现字典嵌套列表取值
2019/12/16 Python
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
家庭户外服装:Hawkshead
2017/11/02 全球购物
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
历史学专业个人的自我评价
2013/10/13 职场文书
采购人员的个人自我评价
2014/01/16 职场文书
茶花女读书笔记
2015/06/29 职场文书
JS 基本概念详细介绍
2021/10/16 Javascript
python 实现图片特效处理
2022/04/03 Python
SQL Server使用导出向导功能
2022/04/08 SQL Server
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang