按照你的意思就是每次每一层只打开一个,是吧?你用一个数组去记录每一层当前打开的项目:如arrCurrNode(0)代表第一层当前打开的项目,arrCurrNode(1)代表第二层当前打开的项目......
比如你有五层,现在你点击第二层的某个节点,先判断数组元素arrCurrNode(1)中记录的节点是否和当前点击的节点相同,若不相同,则关闭arrCurrNode(1)到arrCurrNode(4)中非空(要判断)的对象,再打开当前点击的节点,并将arrCurrNode(1) = 当前点击的节点即可且将arrCurrNode(2)到arrCurrNode(4)等于null;若相同,则表明目前单击的节点是打开的,如果你想让让其关闭,则关闭arrCurrNode(1)到arrCurrNode(4)中非空(要判断)的对象,并将arrCurrNode(1)到arrCurrNode(4)等于null即可。
比如你有五层,现在你点击第二层的某个节点,先判断数组元素arrCurrNode(1)中记录的节点是否和当前点击的节点相同,若不相同,则关闭arrCurrNode(1)到arrCurrNode(4)中非空(要判断)的对象,再打开当前点击的节点,并将arrCurrNode(1) = 当前点击的节点即可且将arrCurrNode(2)到arrCurrNode(4)等于null;若相同,则表明目前单击的节点是打开的,如果你想让让其关闭,则关闭arrCurrNode(1)到arrCurrNode(4)中非空(要判断)的对象,并将arrCurrNode(1)到arrCurrNode(4)等于null即可。
<head>
<meta http-equiv='content-type' content='text/html; charset=gb2312'>
<style>
body,td{font:12px Verdana;color:333333}
.s1{border-width:1px;border-style:solid;border-color:#0090cc #0070b0 #0070b0 #0090cc;font:12px Verdana;
cursor:default;color:ffffff;background:#0080c0;}
.s2{cursor:default;color:ffffff;background:#0080c0;border:0 solid;font:12px Verdana;}
.s3{border-width:1px;border-style:solid;border-color:#0070b0 #0090cc #0090cc #0070b0;color:ffffff;font:12px Verdana;}
</style>
</head>
<body bgcolor=0080c0 topmargin=0 leftmargin=0>
<span id=idM1 style='visibility:hidden;position:absolute'>
文件,编辑,查看,工具,搜索,帮助
|新建-0,打开,关闭,hr,打印,打印预览,打印设置,hr,退出
|复制,剪切,粘贴,hr,格式,插入,字数统计
|工具栏,状态栏,导航栏,hr,全屏,字体
|选项,配置工具,文件管理器,程序管理器,用户管理器
|在系统中搜索,在文件中搜索
|关于Orgnizer,联系开发作者,hr,帮助主题
|0,
</span>
<script>
var str,ss,arr1;
str=idM1.innerHTML;
arr1=str.split("|");
</script>
<div style='margin-left:4;border-bottom:1px solid #0070b0;padding:1'>
<script>
var va1=0,va2=0,va3=0,va4=0,st1;
</script>
<script>
str1=arr1[0];
Menus1=str1.split(',');
for(i=0;i<Menus1.length;i++){
document.write("<input type=button value="+Menus1[i]+" onclick='javascript:document.forms[0].submit();'");
document.write("onFocus='this.blur();' style='width:40;height:18;margin-left:1' class=s2 d="+i+">");
}
</script>
</div>
<div id=idMonth style='position:absolute;top:20;left:6;width:90;background:0080c0;
z-index:10;visibility:hidden' class=s1>
<script>
function fFormM(){
va1=1;
var item=event.srcElement.d;
var pixelLeft=6+item*41;
item=parseInt(item)+1;
str=arr1[item];
Menusi=str.split(',');
var s='';
for(i=0;i<Menusi.length;i++){
if(Menusi[i]=='hr'){
s=s+"<table width='100%' border=0 cellspacing=0 cellpadding=0 height=2 ";
s=s+"style='margin:2 0 2 0'><tr><td height=1 bgcolor=0070b0></td></tr>";
s=s+"<tr><td height=1 bgcolor=0090cc></td></tr></table>";}
else{
s=s+"<input type=button class=s2 value="+Menusi[i]+" d=sub"
s=s+" onFocus='this.blur();' style='width:120;height:18;text-align:left;padding-left:16'"
s=s+"onmouseover='f1()' onmouseout='f2()' onClick='f3()' ><br>"}
}
idMonth.style.left=pixelLeft;
idMonth.innerHTML=s;
idMonth.style.visibility="visible";
}
function fKillM(){
va1=0;
setTimeout('idMonth.style.visibility="hidden";',100);
}
function f1(){
clearTimeout(st1);
event.srcElement.style.background='ffee00';
event.srcElement.style.color='666666';}
function f2(){
st1=setTimeout('fKillM();',400);
event.srcElement.style.background='0080c0';
event.srcElement.style.color='ffffff';}
function f3(){
fKillM();
alert('clicked');
}
</script>
</div>
<script>
for(var prop in document.all)
if(document.all[prop].className=='s2'){
document.all[prop].style.cursor='hand';
document.all[prop].onfocus=doFocus;
document.all[prop].onmouseover=doOver;
document.all[prop].onmouseout=doOut;
document.all[prop].onmousedown=doDown;
document.all[prop].onmouseup=doUp;
document.all[prop].onclick=fFormM;}function doFocus(){
event.srcElement.blur();}
function doOver(){
if(va1==1){
clearTimeout(st1);
event.srcElement.className="s3";
event.srcElement.style.background="0070b0";
fFormM();}
else event.srcElement.className="s1";}
function doOut(){
event.srcElement.className="s2";
event.srcElement.style.background="0080c0";}
function doDown(){
event.srcElement.className="s3";
event.srcElement.style.background="0072b0";}
function doUp(){
}
</script>
我的程序实现如下,我认为这里的关键就是将js脚本turnit3写在循环菜单的后面,这样就可以确定菜单的数目,以前放前面我还真的就卡在那里了 :)
menucount=0
do while not rs333.eof
menucount=menucount+1
<div id="<%="Menu"&menucount%>" style=" cursor:hand" onclick="turnit3(<%="Content"&menucount%>)">
<%if trim(rs333("id"))=trim(session("titleid")) then '当前项打开%>
<!--div id="<%="Content" & rs333("id")%>" -->
<div id="<%="Content"&menucount%>" >
<%else%>
<!--div id="<%="Content" & rs333("id")%>" style="display:none"-->
<div id="<%="Content"&menucount%>" style="display:none">
<%end if
rs333.movenext
loop
%> function turnit3(sub11)
{
var count1=<%=menucount%>;
var str='';
for (i=1;i<count1+1;i++)
{
str='Content'+i+'.style.display="none"';
eval(str);
}
if(sub11.style.display=="none")
{
sub11.style.display="";
}
else
{
sub11.style.display="none";
}
}