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. 图解Android - Looper, Handler 和 MessageQueue

    Looper, Handler 和 MessageQueue 是Android 的异步消息处理机制

  2. BZOJ1036 树的统计

    Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. Q ...

  3. PHP Web System Optimization(undone)

    目录 . 引言 . PHP Pool . listen . Process Manage(PM) . pm.max_children . PHP DB Connection Pool(数据库连接池) ...

  4. sublime text2 ctrl+b出现错误

    查看提示的那个文件,发现是path那里写了一个/,是不符合条件的,得写 //

  5. IOC 构造函数注入vs属性注入

    1.不管是构造函数注入还是属性注入,都要先把对象给new 出来,构造函数应该也是public.2.一般使用 配置文件,属性注入,不用使用特性,直接配置,初始化或依赖,凡是注入的,都要有访问权限,pub ...

  6. Spring学习8- SSH需要的jar包

    struts2 commons-logging-1.0.4.jar 主要用于日志处理 freemarker-2.3.8.jar 模板相关操作需要包 ognl-2.6.11.jar ognl表达示所需包 ...

  7. form表单只提交数据而不进行页面跳转的解决方案

    一般的form提交操作写法为 代码如下: <form action="saveReport.htm" method="post"> …… <i ...

  8. memcache的内存回收机制

    memcache不会释放内存,而是重新利用. 在缓存的清除方面,memcache是不释放已分配内存.当已分配的内存所在的记录失效后,这段以往的内存空间,memcache只会重复利用. memcache ...

  9. web.xml文件中的web-app元素 部署

    [转载]web.xml文件中的web-app元素 (2012-05-24 13:35:57) 转载▼ 标签: 转载 分类: java 挺全 的 呵呵呵 转了 原文地址:web.xml文件中的web-a ...

  10. php统计字数函数

    function countWords($str){ echo (mb_strlen($str, 'utf8') + strlen($str))/2; }