三级菜单---zhufeng
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style type="text/css">
li{ margin:5px 0; }
</style>
</head>
<body style="background:#ccc;">
<div id="menu" style="width:240px; background:#fff;">
<ul>
<li><span>第一级第一个</span></li>
<li><span>第一级第二个</span>
<ul>
<li><span>第二级第一个</span></li>
<li><span>第二级第二个</span></li>
<li><span>第二级第三个</span>
<ul>
<li><span>第三级第一个</span></li>
<li><span>第三级第二个</span></li>
<li><span>第三级第三个</span></li>
<li><span>第三级第四个</span></li>
</ul>
</li>
<li><span>第二级第四个</span></li>
</ul>
</li>
<li><span>第一级第三个</span></li>
<li><span>第一级第四个</span>
<ul>
<li><span>第二级第一个</span></li>
<li><span>第二级第二个</span></li>
<li><span>第二级第三个</span></li>
<li><span>第二级第四个</span></li>
</ul>
</li>
</ul>
</div>
</body>
</html>
<script type="text/javascript" src="DOM.js"></script>
<script type="text/ecmascript">
//如果有下一级菜单,则green,如果是终极 blue
var menu=document.getElementById('menu');
var oLis=document.getElementsByTagName('li');
for(var i=0;i<oLis.length;i++){
var oLi=oLis.item(i);
var oSpan=DOM.children(oLi,'span')[0];
var aUl=DOM.children(oLi,'ul');
if(aUl.length){//为true,表示它有下一级菜单
aUl[0].style.display="none";
oSpan.style.backgroundColor="green";
}else{
oSpan.style.backgroundColor="#09f";
}
}
menu.onclick=function(e){
e=e||window.event;
var t=e.target||e.srcElement;
if(t.nodeName!='SPAN') return;
var next=DOM.siblings(t)[0] ;
//Math
if(next){
if(next.style.display=="none"){
next.style.display="block";
}else{
next.style.display="none";
var oUls=next.getElementsByTagName('ul');
for(var i=0;i<oUls.length;i++){
oUls[i].style.display="none";
}
}
}
}
</script>
var DOM={};//命名空间,起分类的作用。单例模式
BOM={};
DOM.children=function (parent,nodeName){
console.log(arguments.callee.caller)//
var a=[];
var childNodes=parent.childNodes;
for(var i=0;i<childNodes.length;i++){
var child=childNodes[i];
if(typeof nodeName=="undefined"&&child.nodeType==1||typeof nodeName=="string"&&child.nodeName==nodeName.toUpperCase()){
a.push(child)
}
}
return a;
}
DOM.siblings=function (ele){
var a=[];
for(var p=ele.previousSibling;p;p=p.previousSibling){
if(p.nodeType==1){
a.unshift(p);
}
}
var n=ele.nextSibling;
while(n){
if(n.nodeType==1){
a.push(n);
}
n=n.nextSibling;
}
return a;
}
DOM.getIndex=function(ele){
var nIndex=0;
var p=ele.previousSibling;
while(p){
if(p.nodeType==1){
nIndex++
}
p=p.previousSibling;
}
return nIndex;
}
DOM.getElesByClass=function (strClass,context){
function byClassName(strClass,eles){
var reg=new RegExp("file://b%22+strclass+%22//b");
var a=[];
for(var i=0;i<eles.length;i++){
var ele=eles[i];
if(reg.test(ele.className)){a.push(ele); }
}
return a;
}
context=context||document;
if(context.getElementsByClassName){
return context.getElementsByClassName(strClass);
}
strClass=strClass.replace(/^ +| +$/g,"");
var aClass=strClass.split(/ +/);
var eles=context.getElementsByTagName("*");
for(var i=0;i<aClass.length;i++){
eles=byClassName(aClass[i],eles);
}
return eles;
}
DOM.addClass=function(ele,strClass){
var reg=new RegExp("file://b%22+strclass+%22//b");
if(!reg.test(ele.className))
ele.className+=" "+strClass;
}
DOM.removeClass=function(ele,strClass){
var reg=new RegExp("file://b%22+strclass+%22//b%22,%22g");
ele.className=ele.className.replace(reg,"");
}
三级菜单---zhufeng的更多相关文章
- python学习笔记(字符串操作、字典操作、三级菜单实例)
字符串操作 name = "alex" print(name.capitalize()) #首字母大写 name = "my name is alex" pri ...
- css三级菜单效果
一个简单实用的css三级菜单效果 <!doctype html> <html> <head> <meta charset="utf-8"& ...
- python成长之路-----day1-----作业(登录程序和三级菜单)
作业: 作业1:用户登录 1)程序说明: a.用户输入密码验证成功然后打印欢迎信息 b.如果密码错误,用户登录失败,提示用户,密码错误 c.用户输入密码错误3次,则用户锁定 d.当用户多次输入不存在的 ...
- Python之路 day2 字典练习题之 三级菜单
#Author:ersa ''' 程序: 三级菜单 要求: 打印省.市.县三级菜单 可返回上一级 可随时退出程序 ''' menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{ ...
- python3 三级菜单
python版本3.5 功能: 1.程序执行显示一级菜单,输入内容进入二级菜单: 2.进入二级菜单后,输入二级菜单内容,进入三级菜单:输入b返回一级菜单: 3.进入三级菜单后,输入b返回二级菜单. # ...
- 用jQuery做一个三级菜单,鼠标移动到二级菜单的选项上,然后再迅速离开后,当鼠标再移动到该一级菜单或其他二级菜单选项,三级菜单也会显示。
用jQuery做一个三级菜单,鼠标移动到二级菜单的选项上,然后再迅速离开后,当鼠标再移动到该一级菜单或其他二级菜单选项,三级菜单也会显示. 原因:在为一个元素绑定hover事件之后,用户把光标移入元素 ...
- day1作业--三级菜单
作业概述: 写一个三级菜单 实现如下功能: (1)可依次选择进入各子菜单 (2)在每一级按“b”都可以返回上一级,按“q"都可以退出 流程图: readme: 简介: three_menu. ...
- python打怪之路【第三篇】:利用Python实现三级菜单
程序: 利用Python实现三级菜单 要求: 打印省.市.县三级菜单 可返回上一级 可随时退出程序 coding: menu = { '北京':{ '朝阳':{ '国贸':{ 'CICC':{}, ' ...
- Python字典实现三级菜单
################################################ # Task Name: 三级菜单 # # Description:打印省.市.县三级菜单 # # 可 ...
随机推荐
- [C程序设计语言]第四部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- C# 十进制与十六进制互转
1.从十六进制转换为十进制 /// <summary> /// 十六进制转换到十进制 /// </summary> /// <param name="hex&q ...
- Codeforces Round #250 (Div. 2)A(英语学习)
链接:http://codeforces.com/contest/437/problem/A A. The Child and Homework time limit per test 1 secon ...
- javascript学习-原生javascript的小特效(简单的运动效果)
前些日子看了个视频所以就模仿它的技术来为大家做出几个简单的JS小特效 一:运动特效(主要是通过改变元素的left,right,height,width,opacity来达到运动的效果) 我们今天做一个 ...
- MyEclipse + Tomcat 热部署问题
myEclipse设置对应的tomcat时,只需要在jdk的Optional Java VM arguments中添加如下设置: -Xms256m -Xmx512m-Dcom.sun.manageme ...
- ajax小技巧,防止多次点击发送多个请求
var isAjax=false;$("btn").click(function(){ if(isAjax) return; isAjax=true; setTimeout(fun ...
- [css] 浏览器字体和css设置字体之间的关系
原文链接:http://www.zhangxinxu.com/wordpress/2010/06/%E5%8F%AF%E7%94%A8%E6%80%A7%E4%B9%8B%E6%B5%8F%E8%A7 ...
- Spring集成JPA提示Not an managed type
在做Spring与JPA集成时,出现问题如下: Caused by: java.lang.IllegalArgumentException: Not an managed type: class co ...
- IntelliJ IDEA 学习(六)内存设置
小伙伴们经常会发现,在开发的时候,经常遇到内存被占满,导致异常卡顿,有时候提示内存溢出,这时可以通过设置xmx来改善.不过切记最好不要超过内存的1/4 打开 IDEA 安装目录,看到有一个 bin 目 ...
- bloom filter 详解[转]
Bloom Filter概念和原理 焦萌 2007年1月27日 Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合.Bloom ...