一个简单的JS菜单
2013-06-13 11:09
357 查看
在看jquery源码时看到的一个菜单,将它改写成了JS源码。
HTML代码:<div id="menu" class="nav">
<span>类型一</span>
<div class="detail">
<a href="#">列表一</a>
<a href="#">列表一</a>
<a href="#">列表一</a>
<a href="#">列表一</a>
</div>
<span>类型二</span>
<div class="detail">
<a href="#">列表二</a>
<a href="#">列表二</a>
<a href="#">列表二</a>
<a href="#">列表二</a>
</div>
<span>类型三</span>
<div class="detail">
<a href="#">列表三</a>
<a href="#">列表三</a>
<a href="#">列表三</a>
<a href="#">列表三</a>
</div>
<span>类型四</span>
<div class="detail">
<a href="#">列表四</a>
<a href="#">列表四</a>
<a href="#">列表四</a>
<a href="#">列表四</a>
</div>
</div>CSS代码:
HTML代码:<div id="menu" class="nav">
<span>类型一</span>
<div class="detail">
<a href="#">列表一</a>
<a href="#">列表一</a>
<a href="#">列表一</a>
<a href="#">列表一</a>
</div>
<span>类型二</span>
<div class="detail">
<a href="#">列表二</a>
<a href="#">列表二</a>
<a href="#">列表二</a>
<a href="#">列表二</a>
</div>
<span>类型三</span>
<div class="detail">
<a href="#">列表三</a>
<a href="#">列表三</a>
<a href="#">列表三</a>
<a href="#">列表三</a>
</div>
<span>类型四</span>
<div class="detail">
<a href="#">列表四</a>
<a href="#">列表四</a>
<a href="#">列表四</a>
<a href="#">列表四</a>
</div>
</div>CSS代码:
.nav{width:300px;margin:20px auto;overflow:Hidden;} .nav span{width:300px;margin:0 0 1px;height:24px;line-height:24px;background:#333;display:block;color:#fff;} .nav .detail{width:280px;padding:4px 10px;overflow:hidden;display:none;background:#CCC;} .nav .block {display:block;} .nav .active{background:#9C9;} .detail a{color:#000;height:24px;line-height:24px;display:block;}JS代码:
var oMenu = document.getElementById('menu'); var oSpans = getChildren(oMenu,'span'); for(var i=0;i<oSpans.length;i++){ oSpans[i].onclick = showDiv; } function showDiv(){ var oDivs = getChildren(oMenu,'div'); var nIndex = getIndex(this); if(this.className.indexOf('active') == -1){ for(i=0;i<oSpans.length;i++){ removeClass(oSpans[i],'active'); removeClass(oDivs[i],'block'); } addClass(oSpans[nIndex],'active'); addClass(oDivs[nIndex],'block'); }else{ removeClass(oSpans[nIndex],'active'); removeClass(oDivs[nIndex],'block'); } } function getChildren(ele,tagName){ if(ele && ele.nodeType && ele.nodeType == 1){ var a = []; var childNodes = ele.childNodes; if(arguments.length == 1){ for(i=0;i<childNodes.length;i++){ if(childNodes[i].nodeType == 1){ a.push(childNodes[i]); } } }else if(arguments.length == 2){ for(var j=0;j<childNodes.length;j++){ if(childNodes[j].nodeType == 1 && childNodes[j].tagName.toUpperCase() == tagName.toUpperCase()){ a.push(childNodes[j]); } } } return a; } } function getIndex(ele){ if(ele && ele.nodeType && ele.nodeType == 1){ var index = 0; if(ele.previousElementsibling){ var prev = ele.previousElementsibling; while(prev){ index ++; prev = prev.previousElementsibling; } }else{ prev = ele.previousSibling; while(prev){ if(prev.nodeType == 1){ index ++; } prev = prev.previousSibling; } } return index/2; } } function addClass(ele,className){ var reg = new RegExp('\\b'+ className +'\\b'); if(reg.test(className)){ ele.className += ' '+ className; } } function removeClass(ele,className){ var reg = new RegExp('\\b'+ className +'\\b'); if(reg.test(className)){ ele.className = ele.className.replace(reg,''); } }
相关文章推荐
- js写的一个简单的手风琴菜单
- 一个简单的js的省市二级联动菜单(转)
- 一个简单的导航菜单 纯js
- 一个简单的js树形菜单
- 用ReactJs写一个简单的手风琴菜单效果
- 一个简单的js树形菜单
- js实现的一个简单的侧滑菜单
- js实现一个简单的树形菜单
- 一个简单的JS菜单,带效果截图
- 利用JS实现一个简单的二级联动菜单
- js实现简单的联动菜单效果
- 一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
- 原创:Js解析xml文件并简单实现省市区级联菜单(并解决各浏览器兼容性问题).
- 用Js简单实现省市区级联菜单
- 一个简单的导航栏菜单实现
- Android开发——Fragment简单示例(二)制作一个应用菜单导航栏
- 如何在Predix上建立一个简单的Node.js 程序
- 一个Java的SWT菜单显示和递归调用的简单实例
- 一个简单的node.js实现界面
- 简单的一个CSS菜单,不用图片也很好看_网页代码站(www.webdm.cn)