三级下拉菜单的js实现
三级下拉菜单的实现:
展开和隐藏下拉菜单相关代码
1 function list(idstr){
2 var name1="subtree"+idstr;
3 var name2="img"+idstr;
4 var objectobj=document.all(name1);
5 var imgobj=document.all(name2);
6
7
8 //alert(imgobj);
9
10 if(objectobj.style.display=="none"){
11 for(i=1;i<22;i++){
12 var name3="img"+i;
13 var name="subtree"+i;
14 var o=document.all(name);
15 if(o!=undefined){
16 o.style.display="none";
17 var image=document.all(name3);
18 //alert(image);
19 image.src="<%=basePath%>admin/images/ico04.gif";
20 if(idstr>12&&idstr<20){
21 document.getElementById("subtree11").style.display="";
22 document.getElementById("img11").src="<%=basePath%>admin/images/ico03.gif";
23
24 }
25 }
26
27 }
28 objectobj.style.display="";
29 imgobj.src="<%=basePath%>admin/images/ico03.gif";
30 }
31 else{
32 objectobj.style.display="none";
33 imgobj.src="<%=basePath%>admin/images/ico04.gif";
34 }
35 }
代码讲解:如
上,idstr是一个数字字符,用于区别不同的子菜单和图片。通过document.all(name1)拿到所有的id为name1(一变量)的子菜单,这里
其实只有一个,判断如果当前是隐藏状态,则进入循环,又如果元素有定义(为了方便,通过i取到的有些子菜单可能是未定义的)就把所有子菜单隐藏掉(除了1级菜单,包括2、3级菜单)、换掉当前同级菜单图标,最后把当前选中菜单显示出来、换掉当前选中的图标。有种特殊情况:当idstr>12&&idstr<20时候,这时正是第二级菜单激活第三级菜单展开的时候,如下图:选中论文管理,因为成果管理是论文管理的父菜单,成果管理不能隐藏,于是有if(idstr>12&&idstr<20)后面的代码块。最后的else就很好理解了,如果当前被选中菜单展开就隐藏掉,并换掉图标。
View Code
1 function tupian(idt){
2 var nametu="xiaotu"+idt;
3 var tp = document.getElementById(nametu);
4 tp.src="<%=basePath%>admin/images/ico05.gif";//图片ico05为白色的正方形
5
6 for(var i=1;i<32;i++)
7 {
8
9 var nametu2="xiaotu"+i;
10 if(i!=idt*1)
11 {
12 var tp2=document.getElementById('xiaotu'+i);
13 if(tp2!=undefined)
14 {tp2.src="<%=basePath%>admin/images/ico06.gif";}//图片ico06为蓝色的正方形
15 }
16 }
17 }
代码说明:只是换掉图标而已,表示激活或失活。
有兴趣的朋友可以一起学习。。。谢指教了。