唉,失败啊,想了一个多星期,都没想出来!不过还是觉得学到了野。我的初学者,请问你有相关用js实现简单功能的题吗?我想找些题学习下。多谢指教。
实现功能:点击另外的菜单,之前那个已展开的自动收起来,比如在这点击二级的菜单,兄弟节点的二级如果是展开了的,则收起。
<html>
<head>
</head>
<body>
<ul id="side_menu">
<li><a href="#">[-] 一级菜单</a>
<ul>
<li id="a"><a href="#">[-] 二级菜单</a>
<ul>
<li id="b"><a href="#">[-] 三级菜单</a>
<ul>
<li><a href="#">4级菜单</a></li>
<li><a href="#"> 4级菜单</a></li>
   </ul>
</li>
<li><a href="#">[-] 三级菜单</a></li>
</ul>
</li>
<li id="c"><a href="#">[-] 二级菜单</a>
<ul>
<li><a href="#">[-] 三级菜b单</a></li>
<li><a href="#">[-] 三级菜单</a></li>
</ul> </li>
</ul>
</li>
</ul>
<body>
[code=JScript]
<script type="text/javascript">
var level =7;//计数回调次数
var n = level;
var uls = document.getElementsByTagName("ul");//被foldMenu()调用的函数,第二个函数     判断该对象是否包含于side_menu中
function isInSideMenu(obj){
if(n)
{ n--;
if(obj.getAttribute&&obj.getAttribute("id")=="side_menu")
{
n = level;return true;}
 
if(obj.nodeType==9)//判断是否是document文档
{n = level;return false;}//超过当前文档树结构时返回false
else{
return isInSideMenu(obj.parentNode);}
}n = level;
return false;}
//菜单折叠效果函数function foldMenu(){
/*var blockId;
if(this.parentNode.getAttribute("id")!=null)
{blockId=this.parentNode.getAttribute("id");
}
if(blockId==a||blockId==b)
{ getElementById("c").nextSibling.style.display="none";
}
if(blockId==c)
{
getElementById("b").nextSibling.style.display="none";

}*/


if(this.nextSibling&&this.nextSibling.nextSibling)
{ if(this.nextSibling.nextSibling.style.display=="block")
{
this.nextSibling.nextSibling.style.display ="none";
this.innerHTML = this.innerHTML.replace("-","+");
}
else
{
this.nextSibling.nextSibling.style.display ="block";

this.innerHTML = this.innerHTML.replace("+","-");
}
}
else{
this.innerHTML = this.innerHTML.replace("+","-");

}
//初始化树状菜单   这是主函数
function intSideMenu()
{
var as = document.getElementsByTagName("a");
var sidemenuUL = document.getElementById("side_menu");
for(var i=0;i<as.length;i++)
{
if(isInSideMenu(as[i]))//判断该对象是否包含于side_menu中
{
as[i].onclick= foldMenu;

as[i].innerHTML = as[i].innerHTML.replace("-","+");

}
}//给所有树状菜单内的a绑定foldMenu函数 
for(var j=1;j<uls.length;j++){
if(isInSideMenu(uls[j])) uls[j].style.display ="none";//初始化隐藏树状菜单
}
sidemenuUL.style.display = "block";//显示根菜单 
}intSideMenu();
</script></html> 
[/code]