2014年6月25日 15:36:29

需要关注的是:

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)的更多相关文章

  1. javascript 特效实现(1)——展开选项和收起效果

    知识点:javascript事件:判断当前展开收起状态:延迟执行setTimeout方法. 1.简单的展开和收起效果: 1.1 静态结构HTML代码分析 body包含最外层的div id=" ...

  2. [原创]纯JS实现网页中多选复选框checkbox和单选radio的美化效果

    图片素材: 最终效果图: <html><title> 纯JS实现网页中多选复选框checkbox和单选radio的美化效果</title><head>& ...

  3. 纯js和纯css+html制作的手风琴的效果

    一:纯css+html的手风琴效果 这种用css写的手风琴比较简单,主要是应用到css中的,transition属性. 代码如下: <!DOCTYPE HTML> <html> ...

  4. 纯js倒计时效果(交流加群:452892873)(本群每天都更新学习资料)

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. 纯js实现网页tab选项卡切换效果

    纯js实现网页tab选项卡切换效果 百度搜索     js 点击菜单项就可以切换内容的效果

  6. 右上角鼠标滑过展开收缩动画效果js代码的演示页面

    http://files.cnblogs.com/files/tanlingdangan/top_right.rar.gz 右上角鼠标滑过展开收缩动画效果js代码的演示页面http://www.51x ...

  7. 纯js实现省市级联效果

    我们都知道一般有注册的时候会让用户填入省市啊地区什么的,然后我就想使用纯js制作一个省市级联的效果,只是用于学习以及回顾温习用,首先看下效果图,界面很丑啊,不要嫌弃! 首先还是先看下我的项目目录吧 很 ...

  8. [分享黑科技]纯js突破localstorage存储上线,远程抓取图片,并转码base64保存本地,最终实现整个网站所有静态资源离线到用户手机效果却不依赖浏览器的缓存机制,单页应用最新黑科技

    好久没有写博客了,想到2年前答应要放出源代码的也没放出来,最近终于有空先把纯js实现无限空间大小的本地存储的功能开源了,项目地址https://github.com/xueduany/localsto ...

  9. js 点击展开、收起

    //点击展开.收起 window.onload=function(){ var current=document.getElementsByTagName('li')[0]; document.bod ...

随机推荐

  1. Java设计模式-组合模式(Composite)

    组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便,看看关系图: 直接来看代码: public class TreeNode { private String name; private ...

  2. jeecms内容显示条数

    1.按照1.2.3.4.5顺序显示 <div class="index-news"> [@cms_channel id='1'] <h2><span& ...

  3. UDP 内网穿透 心跳

    参考:http://blog.csdn.net/jacman/article/details/ 1: 启动一个Server. 2: 启动两个Client. 然后从Server端的Console里边可以 ...

  4. curl 命令行应用

    我一向以为,curl只是一个编程用的函数库. 最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法. =================================== ...

  5. linux java cpu 100%

    1.用top找到最耗资源的进程id [ bin]# toptop - 16:56:14 up 119 days, 6:17, 7 users, load average: 2.04, 2.07, 2. ...

  6. MyEclipse2014中SVN的使用方法

    MyEclipse中的SVN操作手册 1.导入项目 点击工具栏上的[File-Import],进入下图 (如果你的对话框中没有SVN这一条目,可能是因为你没有安装SVN插件,请安装完成后,在看这篇博客 ...

  7. Spring学习7-Spring整合Hibernate

    一.Springl为什么要整合Hibernate   二者的整合主要是把hibernate中核心的一些类型交给spring管理,这些类型主要包括sessionFactory. transactionM ...

  8. MySQL: Starting MySQL….. ERROR! The server quit without updating PID file解决办法

    MySQL: Starting MySQL….. ERROR! The server quit without updating PID file解决办法 1 问题 [root@localhost m ...

  9. 将ECSHOP会员注册页面的Email修改成非必填项

    将ECSHOP会员注册页面的Email修改成非必填项 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2011-07-29   有人说,在后台的 “会员注册项设置 ”里面 ...

  10. LUA的编译、环境等

    Lua的环境.编译等 Lua命令行 lua命令行选项: -i:进入交互式 -e:执行lua代码 -l:加载库文件 例如使用下面的命令启动lua解释器,可以重新定义lua提示符. lua -i -e & ...