商品筛选html,js实现简单商品筛选功能
本文实例为大家分享了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实现简单商品筛选功能相关推荐
- js实现简单“商品总价计算”
实现思路 一.搭建html结构,凡是需要操作数值的地方都用一个小盒子划分开(商品选中数量.单价.小计(已选同类商品价值总和).商品总数.已选商品价值总和.选中商品中最高单价) 二.给每一个加/减操作b ...
- 使用JS实现简单的选项卡功能
首先我们来写HTML代码,构建出整体结构 代码如下: <!--导航栏部分HTML代码--> <nav id="nav"><ul><li ...
- js实现简单的倒计时功能
使用Date内置对象实现一个简单的倒计时,用户输入目标年月日,点击开始可以看到剩余时间.新手练习,欢迎大家讨论并指出错误.注意不可以输入当前时间之前的时间 效果如图 html代码如下 <!-- ...
- 在ie8上js实现简单的combobox功能(支持拼音检索)
最近在ie8碰到一个js问题,需要实现(ie8)使用拼音或者拼音首字母来检索select中的内容,原来的combobox只能支持汉字输入检索,现在需要进行改进,现在我将一步一步的实现方法记录下来,功能 ...
- html选项卡jq,js/jQuery简单实现选项卡功能
简单选项卡 body,ul,li{margin:0;padding:0;} body{font:12px/1.5 Tahoma;} #outer{width:450px;margin:10px aut ...
- 手写原生js实现简单计算器的功能
话不多说 直接看图片 其实核心思想 就是用了一个eval 函数 里面可以解析带运算符的字符串 但是一定要吧除号和乘号替换成代码里的* 和/ 其他就没有什么了 <!DOCTYPE html> ...
- Js实现简单的计时器功能
最近学习JavaScript的计时器功能,做了一个小案例,在此记录一下,需要的童鞋可以看一下,代码的缺点是小时数部分计时样式没有做出来完整的显示,望海涵. <!DOCTYPE html> ...
- html、js实现分页展示的功能
html.js实现简单的分页功能 逻辑 效果 部分代码 逻辑 简单的逻辑实现:初始的curPage是1.通过登录界面将curPage传入到list.html的QueryString中 在后端的逻辑处理 ...
- java程序设计与j2ee中间件技术/软件开发技术(III)-大作业-采用MVC模式实现商品信息的查询显示(可以模糊查询)、增加和删除功能,商品表自拟,实现简单菜单操作和分页显示
目录 1.题目说明 2.实验设计 2.1 表设计 2.2 工程结构 3.运行界面截图与说明 4.小结 附录:源代码 src/main/java src/main/java/bean Goods.jav ...
最新文章
- 新一代图像AI ISP技术
- GEMM与AutoKernel算子优化
- Docker容器安装配置
- Android中使用SeekBar拖动条实现改变图片透明度
- permute、transpose、view、reshape、unsequeeze与flatten
- windows下面怎么github ssh 公钥,然后克隆项目
- Python Subprocess Popen 管道阻塞问题分析解决
- KMP算法计算next数组 匹配字符串
- Shiro(二)——Shiro认证入门案例
- 【最新版1909 (updated Jan 2020)】Windows10操作系统官方原版镜像
- xy苹果助手安装_xy苹果助手
- 数字电路基础知识(三) 复位设计-异步复位,同步释放
- 计算机打不开管理没反应,为什么电脑上的软件打不开点了没有反应任务管理器也打不开...
- 高通平台修改msm8916_defconfig
- 服务器固态硬盘raid0,SSD固态硬盘,撸一把RAID0模式大提速
- 学习笔记(01):C++编程FFMpeg(QT5+OpenCV)实战--实时美颜直播推流-直播服务器介绍crtmpserver编译运行(ubuntu)...
- 泰拉瑞亚服务器一直显示什么,《泰拉瑞亚》Steam联机总是掉?教你一个稳定联机方法...
- macOS conda 安装指定版本的 Pytorch
- EXCEL中,不能调整行高。当把行高拉到409的时候就不能再拉高了,是什么原因?
- php sequelize,egg.js整合数据库ORM框架Sequelize
热门文章
- 2011 3D 八卦图 矩阵图
- 边缘计算(雾计算)——AI+IoT的热词
- 人工智能实战2019第八次作业 16721088 焦宇恒
- 快门背后的机器学习:实时 HDR+ 和双重曝光控制
- 了解实时时钟RTC的原理并通过stm32实现STM32的日历读取、设置和输出
- 初中计算机毕业测试,2019年初中信息技术毕业考试顺利结束
- 腾讯视频投屏显示无法连接服务器,腾讯视频投屏不能快进
- 服务器接收 App Store 苹果商店内购项目IAP的退款通知
- ac6005直连ap 如何配置_WLAN1:AC6005组网配置实验
- 中国国产CPU研发现状