菜单栏展开和收起效果(纯js)
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)的更多相关文章
- javascript 特效实现(1)——展开选项和收起效果
知识点:javascript事件:判断当前展开收起状态:延迟执行setTimeout方法. 1.简单的展开和收起效果: 1.1 静态结构HTML代码分析 body包含最外层的div id=" ...
- [原创]纯JS实现网页中多选复选框checkbox和单选radio的美化效果
图片素材: 最终效果图: <html><title> 纯JS实现网页中多选复选框checkbox和单选radio的美化效果</title><head>& ...
- 纯js和纯css+html制作的手风琴的效果
一:纯css+html的手风琴效果 这种用css写的手风琴比较简单,主要是应用到css中的,transition属性. 代码如下: <!DOCTYPE HTML> <html> ...
- 纯js倒计时效果(交流加群:452892873)(本群每天都更新学习资料)
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 纯js实现网页tab选项卡切换效果
纯js实现网页tab选项卡切换效果 百度搜索 js 点击菜单项就可以切换内容的效果
- 右上角鼠标滑过展开收缩动画效果js代码的演示页面
http://files.cnblogs.com/files/tanlingdangan/top_right.rar.gz 右上角鼠标滑过展开收缩动画效果js代码的演示页面http://www.51x ...
- 纯js实现省市级联效果
我们都知道一般有注册的时候会让用户填入省市啊地区什么的,然后我就想使用纯js制作一个省市级联的效果,只是用于学习以及回顾温习用,首先看下效果图,界面很丑啊,不要嫌弃! 首先还是先看下我的项目目录吧 很 ...
- [分享黑科技]纯js突破localstorage存储上线,远程抓取图片,并转码base64保存本地,最终实现整个网站所有静态资源离线到用户手机效果却不依赖浏览器的缓存机制,单页应用最新黑科技
好久没有写博客了,想到2年前答应要放出源代码的也没放出来,最近终于有空先把纯js实现无限空间大小的本地存储的功能开源了,项目地址https://github.com/xueduany/localsto ...
- js 点击展开、收起
//点击展开.收起 window.onload=function(){ var current=document.getElementsByTagName('li')[0]; document.bod ...
随机推荐
- Java基础-JVM堆与栈
首先看一个解析列子 JVM的内存空间: (1). Heap 堆空间:分配对象 new Student() (2). Stack 栈空间:临时变量 Student stu (3).Code 代码区 :类 ...
- Log4Net使用详解
1.Log4Net环境的搭建与基本配置 (1)Log4Net框架介绍 Log4net 是 Apache 下一个开放源码的项目,它是Log4j 的一个克隆版.我们可以控制日志信息的输出目的地.L ...
- 什么时候用Vector, 什么时候改用ArrayList?
转自:http://www.cnblogs.com/langtianya/archive/2012/08/28/2659787.html 书得到的信息好像是Vector是从java1开始就有了,Arr ...
- JS~json日期格式化
起因 对于从C#返回的日期字段,当进行JSON序列化后,在前台JS里显示的并不是真正的日期,这让我们感觉很不爽,我们不可能为了这东西,把所有日期字段都变成string吧,所以,找了一个JS的扩展方法, ...
- asp.net 实现在线打印功能,jQuery打印插件PrintArea实现自动分页
使用的组件:jQuery打印插件PrintArea,有兴趣的可以研究一下. 使用方法略过,这里将介绍如何实现打印多页是可以分页. 现在提供两种方法思路: 1.根据特定的打印机型号和使用的纸张类型,然后 ...
- curl 命令行应用
我一向以为,curl只是一个编程用的函数库. 最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法. =================================== ...
- Linux下添加新硬盘,分区及挂载
挂载好新硬盘后输入fdisk -l命令看当前磁盘信息 可以看到除了当前的第一块硬盘外还有一块sdb的第二块硬盘,然后用fdisk /dev/sdb 进行分区 进入fdisk命令,输入h可以看到该命令的 ...
- 文件流StreamReader和StreamWriter的使用
using (StreamReader sr = new StreamReader(@"C:\Users\shuai\Desktop\文件流读取.txt", Encoding.De ...
- unity3d下载Obb分包文件
下载OBB插件包 http://pan.baidu.com/s/1c0ouRZE 1.导入插件 注意事项: 如果项目中已经存在Android 插件,需要merge导入的xml文件例如 AndroidM ...
- WPF TabControl 模拟动画
using System; using System.Threading; using System.Windows; using System.Windows.Controls; using Wan ...