菜单栏展开和收起效果(纯js)

简介: 2014年6月25日 15:36:29 需要关注的是:  1.用cookie保存用户当前点击的菜单项,不打扰后端代码 2.通过数学计算得到要显示和隐藏的div 3.点击事件是动态绑定到a标签上的,因此当dom加载完后,再执行js,也就是写在onload里 HTML如下: 1 aaa...

2014年6月25日 15:36:29

需要关注的是: 

1.用cookie保存用户当前点击的菜单项,不打扰后端代码

2.通过数学计算得到要显示和隐藏的div

3.点击事件是动态绑定到a标签上的,因此当dom加载完后,再执行js,也就是写在onload里

HTML如下:

 1 <h3 class="titleH3" id="101">aaaa</h3>
 2 <div class="subNav" id="1">
 3     <a href="#">1</a>
 4     <a href="#">2</a>
 5     <a href="#">3</a>
 6 </div>
 7 <h3 class="titleH3" id="102">bbbb</h3>
 8 <div class="subNav" id="2">
 9     <a href="#">11</a>
10     <a href="#">22</a>
11     <a href="#">33</a>
12 </div>

js如下:

 1 function showhide()
 2 {
 3     //绑定a链接的点击事件
 4     //点击a链接的时候将id写进cookie
 5     var arrSubNav = document.getElementsByClassName('subNav');
 6     for (var i = 0; i < arrSubNav.length; i++) {
 7         var arrHref = arrSubNav[i].getElementsByTagName('a');
 8         for (var j = 0; j < arrHref.length; j++) {
 9             arrHref[j].onclick = function () {
10                 var nodeParent = this.parentNode; //获取a链接所在的那个div块儿的id,注意,此处用this
11                 var idParent = nodeParent.getAttribute('id');
12                 document.cookie="userCheck="+idParent+";domain=***.***.com;path=/***"; //用cookie记录下用户当前的选择
13             }
14         }
15     }
16 
17     //从cookie里取值,展开指定div
18     userCheck = getUserCheckInfo();
19     if (userCheck > 0) {
20         for (var i = 0; i < arrSubNav.length; i++ ) {
21             arrSubNav[i].style.display = 'none';
22         }
23         document.getElementById(userCheck).style.display = 'block';
24     } else {
25         document.getElementById('3').style.display = 'block';
26     }
27 
28     //点击标题时展开其下的菜单
29     var arrTitle = document.getElementsByClassName('titleH3');
30     for (var i = 0; i < arrTitle.length; i++) {
31         arrTitle[i].onclick = function () {
32             var idTitle = this.getAttribute('id');
33             var idSubNav = idTitle % 100; //根据title的id获取子菜单div的id
34             
35             for (var i = 0; i < arrSubNav.length; i++ ) {
36                 arrSubNav[i].style.display = 'none';
37             }
38             document.getElementById(idSubNav).style.display = 'block';
39 
40         }
41     };
42 }
43 
44 function getUserCheckInfo()
45 {
46     var strCookie = document.cookie;
47     //将多cookie切割为多个名/值对 
48     var arrCookie=strCookie.split("; "); 
49     var userCheck = '0'; 
50     //遍历cookie数组,处理每个cookie对 
51     for(var i=0;i<arrCookie.length;i++) { 
52         var arr=arrCookie[i].split("="); 
53         if("userCheck"==arr[0]){ 
54             userCheck=arr[1]; 
55             break; 
56         } 
57     } 
58     return userCheck;
59 }

 变量名没有起好,userCheck应该为userChoice或者userSelected更恰当,他是用来保存用户点击的菜单的id的

目录
相关文章
element-plus:el-table自定义展开图标处于列的位置
element-plus:el-table自定义展开图标处于列的位置
1082 0
|
存储 编解码 算法
深度探索:使用FFmpeg实现视频Logo的添加与移除(二)
深度探索:使用FFmpeg实现视频Logo的添加与移除
527 0
使用markdown-it对markdown进行一个实时解析
# 引言 大家应该都接触过markdown笔记吧,我们常常见到很多能写文章的网页提供了一个实时的markdown解析的功能----即我们在一侧写下markdown语法,右边能够实时解析,并将解析后的markdown语法渲染到右侧页面上。非常炫酷实用,那么这是如何实现的呢?今天我们来一起探究一下。 # 开始 首先,我们这个演示学习在Vue3+TypeScript下使用的,所以我们预先建议准备一个Vue3+Typescript工程。 对于markdown的解析,我们可以使用`markdown-it`来进行解析。 比如,我们在左侧设置一个输入框,接收用户markdown输入,我们通过`ma
|
11月前
|
人工智能
巧妙构建歌词结构:写歌词的技巧和方法之关键,妙笔生词AI智能写歌词软件
在音乐世界里,歌词是灵魂的载体,构建其结构至关重要。优秀的歌词需有引人入胜的开头、条理清晰且富变化的主体,以及深刻难忘的结尾。《妙笔生词智能写歌词软件》提供多种功能,帮助创作者克服结构难题,激发灵感,助你写出打动人心的歌词,开启音乐创作的新篇章。
|
安全 网络安全 API
什么是软件定义安全SDSec
软件定义安全(Software Defined Security,SDSec)是一种从软件定义网络(SDN)引申而来的概念,其核心原理是将网络安全设备与其接入模式、部署方式、实现功能进行解耦。这种解耦使得底层的网络安全设备可以抽象为安全资源池中的资源,而顶层则通过软件编程的方式进行智能化、自动化的业务编排和管理,以完成相应的安全功能,实现灵活的安全防护 。
247 1
|
9月前
|
Kubernetes 应用服务中间件 nginx
二进制安装Kubernetes(k8s)v1.32.0
本指南提供了一个详细的步骤,用于在Linux系统上通过二进制文件安装Kubernetes(k8s)v1.32.0,支持IPv4+IPv6双栈。具体步骤包括环境准备、系统配置、组件安装和配置等。
2858 11
|
JavaScript
vue3移动端自适应方案
【8月更文挑战第14天】
702 7
|
安全 API 数据安全/隐私保护
上云时代的“细粒度”访问权限,拿捏!
亿格云自研的SASE一体化办公安全平台——亿格云枢,以身份为驱动的零信任SASE架构,提供稳定高效的网络访问体验,一个平台融合零信任访问、数据防泄漏、终端检测与响应、上网行为管理、合规基线检测等安全能力,实现内外部应用统一管控,确保无论是总部、分支机构、居家办公还是移动办公,都能达到一致的高标准安全防护,360°严密防护敏感数据!
|
存储 Kubernetes Ubuntu
使用 ezctl 工具部署和管理 Kubernetes 集群
使用 ezctl 工具部署和管理 Kubernetes 集群
1461 0
使用 ezctl 工具部署和管理 Kubernetes 集群
|
存储 Kubernetes 监控
Kubernetes(k8s)集群健康检查常用的五种指标
Kubernetes(k8s)集群健康检查常用的五种指标
1695 1

热门文章

最新文章