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

应用场景:商品筛选

Document

* {

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;

}

  • 手机:

    小米

    华为

    apple

    OPPO

    vivo

  • 价格:

    3200

    2600

    899

    2799

    2299

  • 屏幕:

    399

    600

    800

    1200

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. 将点击事件分离出去

}

}

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

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

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

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]);

}

}

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

商品筛选html,js实现简单商品筛选功能相关推荐

  1. js实现简单“商品总价计算”

    实现思路 一.搭建html结构,凡是需要操作数值的地方都用一个小盒子划分开(商品选中数量.单价.小计(已选同类商品价值总和).商品总数.已选商品价值总和.选中商品中最高单价) 二.给每一个加/减操作b ...

  2. 使用JS实现简单的选项卡功能

    首先我们来写HTML代码,构建出整体结构  代码如下: <!--导航栏部分HTML代码--> <nav id="nav"><ul><li ...

  3. js实现简单的倒计时功能

    使用Date内置对象实现一个简单的倒计时,用户输入目标年月日,点击开始可以看到剩余时间.新手练习,欢迎大家讨论并指出错误.注意不可以输入当前时间之前的时间 效果如图 html代码如下 <!-- ...

  4. 在ie8上js实现简单的combobox功能(支持拼音检索)

    最近在ie8碰到一个js问题,需要实现(ie8)使用拼音或者拼音首字母来检索select中的内容,原来的combobox只能支持汉字输入检索,现在需要进行改进,现在我将一步一步的实现方法记录下来,功能 ...

  5. html选项卡jq,js/jQuery简单实现选项卡功能

    简单选项卡 body,ul,li{margin:0;padding:0;} body{font:12px/1.5 Tahoma;} #outer{width:450px;margin:10px aut ...

  6. 手写原生js实现简单计算器的功能

    话不多说 直接看图片 其实核心思想 就是用了一个eval 函数 里面可以解析带运算符的字符串 但是一定要吧除号和乘号替换成代码里的* 和/ 其他就没有什么了 <!DOCTYPE html> ...

  7. Js实现简单的计时器功能

    最近学习JavaScript的计时器功能,做了一个小案例,在此记录一下,需要的童鞋可以看一下,代码的缺点是小时数部分计时样式没有做出来完整的显示,望海涵. <!DOCTYPE html> ...

  8. html、js实现分页展示的功能

    html.js实现简单的分页功能 逻辑 效果 部分代码 逻辑 简单的逻辑实现:初始的curPage是1.通过登录界面将curPage传入到list.html的QueryString中 在后端的逻辑处理 ...

  9. java程序设计与j2ee中间件技术/软件开发技术(III)-大作业-采用MVC模式实现商品信息的查询显示(可以模糊查询)、增加和删除功能,商品表自拟,实现简单菜单操作和分页显示

    目录 1.题目说明 2.实验设计 2.1 表设计 2.2 工程结构 3.运行界面截图与说明 4.小结 附录:源代码 src/main/java src/main/java/bean Goods.jav ...

最新文章

  1. 新一代图像AI ISP技术
  2. GEMM与AutoKernel算子优化
  3. Docker容器安装配置
  4. Android中使用SeekBar拖动条实现改变图片透明度
  5. permute、transpose、view、reshape、unsequeeze与flatten
  6. windows下面怎么github ssh 公钥,然后克隆项目
  7. Python Subprocess Popen 管道阻塞问题分析解决
  8. KMP算法计算next数组 匹配字符串
  9. Shiro(二)——Shiro认证入门案例
  10. 【最新版1909 (updated Jan 2020)】Windows10操作系统官方原版镜像
  11. xy苹果助手安装_xy苹果助手
  12. 数字电路基础知识(三) 复位设计-异步复位,同步释放
  13. 计算机打不开管理没反应,为什么电脑上的软件打不开点了没有反应任务管理器也打不开...
  14. 高通平台修改msm8916_defconfig
  15. 服务器固态硬盘raid0,SSD固态硬盘,撸一把RAID0模式大提速
  16. 学习笔记(01):C++编程FFMpeg(QT5+OpenCV)实战--实时美颜直播推流-直播服务器介绍crtmpserver编译运行(ubuntu)...
  17. 泰拉瑞亚服务器一直显示什么,《泰拉瑞亚》Steam联机总是掉?教你一个稳定联机方法...
  18. macOS conda 安装指定版本的 Pytorch
  19. EXCEL中,不能调整行高。当把行高拉到409的时候就不能再拉高了,是什么原因?
  20. php sequelize,egg.js整合数据库ORM框架Sequelize

热门文章

  1. 2011 3D 八卦图 矩阵图
  2. 边缘计算(雾计算)——AI+IoT的热词
  3. 人工智能实战2019第八次作业 16721088 焦宇恒
  4. 快门背后的机器学习:实时 HDR+ 和双重曝光控制
  5. 了解实时时钟RTC的原理并通过stm32实现STM32的日历读取、设置和输出
  6. 初中计算机毕业测试,2019年初中信息技术毕业考试顺利结束
  7. 腾讯视频投屏显示无法连接服务器,腾讯视频投屏不能快进
  8. 服务器接收 App Store 苹果商店内购项目IAP的退款通知
  9. ac6005直连ap 如何配置_WLAN1:AC6005组网配置实验
  10. 中国国产CPU研发现状