菜单栏展开和收起效果(纯js)
2014-06-25 15:51
330 查看
2014年6月25日 15:36:29
需要关注的是:
1.用cookie保存用户当前点击的菜单项,不打扰后端代码
2.通过数学计算得到要显示和隐藏的div
3.点击事件是动态绑定到a标签上的,因此当dom加载完后,再执行js,也就是写在onload里
HTML如下:
js如下:
变量名没有起好,userCheck应该为userChoice或者userSelected更恰当,他是用来保存用户点击的菜单的id的
需要关注的是:
1.用cookie保存用户当前点击的菜单项,不打扰后端代码
2.通过数学计算得到要显示和隐藏的div
3.点击事件是动态绑定到a标签上的,因此当dom加载完后,再执行js,也就是写在onload里
HTML如下:
<h3 class="titleH3" id="101">aaaa</h3> <div class="subNav" id="1"> <a href="#">1</a> <a href="#">2</a> <a href="#">3</a> </div> <h3 class="titleH3" id="102">bbbb</h3> <div class="subNav" id="2"> <a href="#">11</a> <a href="#">22</a> <a href="#">33</a> </div>
js如下:
function showhide() { //绑定a链接的点击事件 //点击a链接的时候将id写进cookie var arrSubNav = document.getElementsByClassName('subNav'); for (var i = 0; i < arrSubNav.length; i++) { var arrHref = arrSubNav[i].getElementsByTagName('a'); for (var j = 0; j < arrHref.length; j++) { arrHref[j].onclick = function () { var nodeParent = this.parentNode; //获取a链接所在的那个div块儿的id,注意,此处用this var idParent = nodeParent.getAttribute('id'); document.cookie="userCheck="+idParent+";domain=***.***.com;path=/***"; //用cookie记录下用户当前的选择 } } } //从cookie里取值,展开指定div userCheck = getUserCheckInfo(); if (userCheck > 0) { for (var i = 0; i < arrSubNav.length; i++ ) { arrSubNav[i].style.display = 'none'; } document.getElementById(userCheck).style.display = 'block'; } else { document.getElementById('3').style.display = 'block'; } //点击标题时展开其下的菜单 var arrTitle = document.getElementsByClassName('titleH3'); for (var i = 0; i < arrTitle.length; i++) { arrTitle[i].onclick = function () { var idTitle = this.getAttribute('id'); var idSubNav = idTitle % 100; //根据title的id获取子菜单div的id for (var i = 0; i < arrSubNav.length; i++ ) { arrSubNav[i].style.display = 'none'; } document.getElementById(idSubNav).style.display = 'block'; } }; } function getUserCheckInfo() { var strCookie = document.cookie; //将多cookie切割为多个名/值对 var arrCookie=strCookie.split("; "); var userCheck = '0'; //遍历cookie数组,处理每个cookie对 for(var i=0;i<arrCookie.length;i++) { var arr=arrCookie[i].split("="); if("userCheck"==arr[0]){ userCheck=arr[1]; break; } } return userCheck; }
变量名没有起好,userCheck应该为userChoice或者userSelected更恰当,他是用来保存用户点击的菜单的id的
相关文章推荐
- 自己写了一个展开和收起的多更能型的js效果
- js 展开收起效果
- 常见js效果——在表格中收起展开
- vue.js 实现点击展开收起动画效果
- jq与原生js实现收起展开效果
- html+css+js 简易展开收起效果
- 如何实现js展开收起(折叠)效果呢?例如:一段内容过长了,我限制他显示为20个字内,但是超出了20的就先用省略号代替,然后后面添加一个展开,点击展开后就显示所有的内容,这时候展开按钮就变成了 折叠按钮
- 原生JS仿QQ阅读点击展开、收起效果
- 自己写了一个展开和收起的js效果...分享给大家
- js 展开/收起效果
- 自己写了一个展开和收起的多更能型的js效果
- js展开闭合效果演示代码
- 原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
- 在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
- jQuery 导航菜单点击伸缩展开效果的JS特效
- [原创 js] 点击展开关闭效果
- 如何在一张图片上添加多个链接 ,如何利用js做出靠右侧浮动菜单栏的效果
- 我的第一个封装js代码-----展开收起效果
- Js+Div 层展开与层收起的一个例子
- 多组处理, 仅展开一个区块的折叠效果(原生Js和jQ版)