js实现简单商品筛选功能


Posted in Javascript onFebruary 02, 2021

本文实例为大家分享了js实现商品筛选功能的具体代码,供大家参考,具体内容如下

应用场景:商品筛选

js实现简单商品筛选功能

<!DOCTYPE html>
<html lang="en">

<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <style type="text/css">
 * {
 margin: 0;
 padding: 0;
 list-style: none;
 text-decoration: none;
 }
 
 .choose {
 width: 500px;
 height: auto;
 margin: auto;
 }
 
 .choose nav {
 height: 50px;
 background-color: red;
 }
 
 .choose nav span {
 margin: 0 5px;
 }
 
 .choose .show {
 color: red;
 }
 
 .choose ul li {
 border: 1px solid black;
 }
 
 .choose ul li a {
 box-sizing: border-box;
 display: inline-block;
 width: 40px;
 border-left: 1px solid black;
 margin: 5px;
 padding-left: 5px;
 }
 </style>
</head>

<body>
 <div class="choose">
 <nav></nav>
 <ul>
 <li>
 <strong>手机:</strong>
 <a href="javascript:;">小米</a>
 <a href="javascript:;">华为</a>
 <a href="javascript:;">apple</a>
 <a href="javascript:;">OPPO</a>
 <a href="javascript:;">vivo</a>
 </li>
 <li>
 <strong>价格:</strong>
 <a href="javascript:;">3200</a>
 <a href="javascript:;">2600</a>
 <a href="javascript:;">899</a>
 <a href="javascript:;">2799</a>
 <a href="javascript:;">2299</a>
 </li>
 <li>
 <strong>屏幕:</strong>
 <a href="javascript:;">399</a>
 <a href="javascript:;">600</a>
 <a href="javascript:;">800</a>
 <a href="javascript:;">1200</a>
 </li>
 </ul>
 </div>
</body>

</html>
<script type="text/javascript">
 var li = document.querySelectorAll('li');
 var stack = []; //存放三个类别的option

 for (var i = 0; i < li.length; i++) {
 // 获取每个li中的option进行处理
 var options = li[i].querySelectorAll("a");
 for (var j = 0; j < options.length; j++) {
 // 当选项被点击时,传入点击的类别是第几个li的
 // options[j].onclick = Aclick.bind(options[j], [i]); //1. 将点击事件分离出去
 options[j].onclick = Bclick(i); //2. 将点击事件分离出去
 }
 }
</script>

当写到这里的时候想要把这个事件函数分离出去,但是有参数。于是问题出现

如何将一个带参数的事件函数分离出去???

于是乎:就有了以下两种方法

1、使用bind改变this指向后返回一个不执行的函数

function Aclick(index) {
// 删掉nav
var choose = document.querySelector('.choose');
var nav = document.querySelector(".choose nav");
 choose.removeChild(nav);

 // 使用stack重新添加
 stack[index] = this.innerHTML;
 var nav = document.createElement("nav");
 for (k = 0; k < stack.length; k++) {
 if (stack[k] != "" && stack[k] != undefined) { //略过stack中的空项,重新向nav中添加span
  var span = document.createElement("span");
  var a = document.createElement("a");
  a.innerHTML = "X";
  a.href = "javascript:void(0);";
  span.innerHTML = stack[k];
  a.onclick = function() {
  stack[index] = "";
  nav.removeChild(this.parentNode);
  }
  span.appendChild(a);
  nav.appendChild(span);
 }
 }
 choose.insertBefore(nav, choose.children[0]);
}

2、在注册函数外面套一层函数将注册函数返回

function Bclick(index) {
 return function() {
 // 删掉nav
 var choose = document.querySelector('.choose');
 var nav = document.querySelector(".choose nav");
 choose.removeChild(nav);

 // 使用stack重新添加
 stack[index] = this.innerHTML;
 var nav = document.createElement("nav");
 for (k = 0; k < stack.length; k++) {
  if (stack[k] != "" && stack[k] != undefined) { //略过stack中的空项,重新向nav中添加span
  var span = document.createElement("span");
  var a = document.createElement("a");
  a.innerHTML = "X";
  a.href = "javascript:void(0);";
  span.innerHTML = stack[k];
  a.onclick = function() {
  stack[index] = "";
  nav.removeChild(this.parentNode);
  }
  span.appendChild(a);
  nav.appendChild(span);
  }
 }
 choose.insertBefore(nav, choose.children[0]);
 }
}

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

Javascript 相关文章推荐
js 使FORM表单的所有元素不可编辑的示例代码
Oct 17 Javascript
原生JavaScript制作微博发布面板效果
Mar 11 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
Jul 18 Javascript
JS实现微信弹出搜索框 多条件查询功能
Dec 13 Javascript
JavaScript中transform实现数字翻页效果
Mar 08 Javascript
Vue插槽原理与用法详解
Mar 05 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
May 30 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
Jun 17 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
Sep 01 Javascript
Vue实现跑马灯效果
May 25 Javascript
vue 在methods中调用mounted的实现操作
Aug 07 Javascript
如何利用vue实现波谱拟合详解
Nov 05 Javascript
如何在现代JavaScript中编写异步任务
Jan 31 #Javascript
ES6的循环与可迭代对象示例详解
Jan 31 #Javascript
Javascript生成器(Generator)的介绍与使用
Jan 31 #Javascript
Node.js中的异步生成器与异步迭代详解
Jan 31 #Javascript
Vite和Vue CLI的优劣
Jan 30 #Vue.js
如何使用RoughViz可视化Vue.js中的草绘图表
Jan 30 #Vue.js
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
Jan 29 #Javascript
You might like
PHP 创建标签云函数代码
2010/05/26 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
跟我学Laravel之请求(Request)的生命周期
2014/10/15 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
Javascript之图片的延迟加载的实例详解
2017/07/24 Javascript
JavaScript复制内容到剪贴板的两种常用方法
2018/02/27 Javascript
js中null与空字符串&quot;&quot;的区别讲解
2019/01/17 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
JS实现碰撞检测效果
2020/03/12 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
python client使用http post 到server端的代码
2013/02/10 Python
Python中的ctime()方法使用教程
2015/05/22 Python
python执行子进程实现进程间通信的方法
2015/06/02 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
Python中qutip用法示例详解
2020/10/02 Python
Python getsizeof()和getsize()区分详解
2020/11/20 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
苹果中国官方网站:Apple中国
2016/07/22 全球购物
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
俄罗斯电动工具和设备购物网站:Vseinstrumenti.ru
2020/11/12 全球购物
EJB的几种类型
2012/08/15 面试题
办公室保洁员岗位职责
2013/12/02 职场文书
接受捐赠答谢词
2014/01/27 职场文书
职工代表大会主持词
2014/04/01 职场文书
企业金融服务方案
2014/06/03 职场文书