雨风的个人网站(分享一些学习笔记)

青箬笠,绿蓑衣,细雨斜风不须归
 
 
一个简单的收缩菜单 (2019/7/25 21:00:26)
分类:网站开发 | 标签:收缩菜单 折叠菜单 

好久没有更新网站,今天上传一段小代码。

需求见下图,要求点击菜单展开子菜单, 但是其他同级展开的菜单要折叠。

menu.png

想了下,其实收缩展开菜单还是很简单的,用obj.style.display来控制就可以了。我以前是通过设置display的属性为none和 (空)来实现。

这次遇到的情况是,用li和ul布的局。所以发现display=""不好用了,换成display="block"。

if(obj.style.display=='none'){

   obj.style.display='block';

}else{

   obj.style.display='none';

}

上述代码就实现了菜单的展开和折叠。

现在要实现展开后,同级其他展开的菜单要收缩。这个时候需要引入中间变量,记住当前展开的是哪个菜单,然后点击后,与当前菜单进行比较,如果想等,直接收缩就可以了。如果不同,则先将原来的菜单收缩,在展开本次点击的菜单,再将中间变量设置为当前菜单。

原理就是这样,要实现起来,还得经过不断调试才行。编程就是不断调试然后达到目的的过程,这个过程是很享受的。

代码如下:

 

<script type="text/javascript" >
var erji=0;
var sanji=0;
function opmenu(menutype,menuid){
 if(menutype=="erji"){
  if(document.getElementById(menutype+menuid).style.display=="none"){
   document.getElementById(menutype+menuid).style.display="block";
   if(erji==0){
    erji=menuid;
   }else{
    document.getElementById(menutype+erji).style.display="none";
    if(erji==menuid){
     erji=0;
     document.getElementById(menutype+menuid).style.display="block";
    }else{
    erji=menuid;
    }
   }
  }else{
   document.getElementById(menutype+menuid).style.display="none";
  } 
  document.getElementById("show").innerText="erji:"+erji;
 }else{
  if(document.getElementById(menutype+menuid).style.display=="none"){
   document.getElementById(menutype+menuid).style.display="block";
   if(sanji==0){
    sanji=menuid;
   }else{
    document.getElementById(menutype+sanji).style.display="none";
    if(sanji==menuid){
     sanji=0;
     document.getElementById(menutype+menuid).style.display="block";
    }else{
    sanji=menuid;
    }
   }
  }else{
   document.getElementById(menutype+menuid).style.display="none";
  }
  document.getElementById("show1").innerText="sanji:"+sanji;
 }
}

</script>
<li><a href="javascript:opmenu('erji',1);">一级菜单</a>
 <ul id="erji1" style="display:none;">
     <li><a href="javascript:opmenu('sanji',1);">二级菜单</a>
         <ul id="sanji1" style="display:none;">
             <li>三级菜单</li>
                <li>三级菜单</li>
                <li>三级菜单</li>
            </ul>
        </li>
        <li><a href="javascript:opmenu('sanji',2);">二级菜单</a>
         <ul id="sanji2" style="display:none;">
             <li>三级菜单</li>
                <li>三级菜单</li>
                <li>三级菜单</li>
            </ul>
        </li>
        <li><a href="javascript:opmenu('sanji',3);">二级菜单</a>
         <ul id="sanji3" style="display:none;">
             <li>三级菜单</li>
                <li>三级菜单</li>
                <li>三级菜单</li>
            </ul>
        </li>
    </ul>
</li>
<li><a href="javascript:opmenu('erji',2);">一级菜单</a>
 <ul id="erji2" style="display:none;">
     <li><a href="javascript:opmenu('sanji',4);">二级菜单</a>
         <ul id="sanji4" style="display:none;">
             <li>三级菜单</li>
                <li>三级菜单</li>
                <li>三级菜单</li>
            </ul>
        </li>
        <li><a href="javascript:opmenu('sanji',5);">二级菜单</a>
         <ul id="sanji5" style="display:none;">
             <li>三级菜单</li>
                <li>三级菜单</li>
                <li>三级菜单</li>
            </ul>
        </li>
        <li><a href="javascript:opmenu('sanji',6);">二级菜单</a>
         <ul id="sanji6" style="display:none;">
             <li>三级菜单</li>
                <li>三级菜单</li>
                <li>三级菜单</li>
            </ul>
        </li>
    </ul>
</li><li><a href="javascript:opmenu('erji',3);">一级菜单</a>
 <ul id="erji3" style="display:none;">
     <li><a href="javascript:opmenu('sanji',7);">二级菜单</a>
         <ul id="sanji7" style="display:none;">
             <li>三级菜单</li>
                <li>三级菜单</li>
                <li>三级菜单</li>
            </ul>
        </li>
        <li><a href="javascript:opmenu('sanji',8);">二级菜单</a>
         <ul id="sanji8" style="display:none;">
             <li>三级菜单</li>
                <li>三级菜单</li>
                <li>三级菜单</li>
            </ul>
        </li>
        <li><a href="javascript:opmenu('sanji',9);">二级菜单</a>
         <ul id="sanji9" style="display:none;">
             <li>三级菜单</li>
                <li>三级菜单</li>
                <li>三级菜单</li>
            </ul>
        </li>
    </ul>
</li>
<div id="show">0</div>
<div id="show1">0</div>


最后两个div是用来调试js的

阅读(15026) | 评论(0)
相关文章
暂无相关文章!
评论
暂无评论!
昵称: * QQ:
Email: Website:
内容: *
验证码:  显示/刷新验证码 *
文章分类
电脑网络(3)
多耐特(1)
微信公众平台(3)
网站开发(3)
计算机基础(0)
智慧校园(1)
其他分类(0)
 
热门文章
一个简单的收缩菜单(15026)
asp版微信公众平台开发代码(7944)
个人订阅号实现网页获取用户openid(asp版)(7526)
asp微信公众平台申请及开发设置(6017)
迷宫求解(js)(4072)
 
热门标签
asp(5050,3)  webservice(4076,1)  xml(3818,1)  微信公众平台(353,2)  关联度(,1)  订阅号(,1)  订阅号网页(,1)  网页获取openid(,1)  微信平台开发(,1)  学习笔记(,1)  迷宫求解(,1)  云技术(,1)  javascript(,1)  相关性(,1)  相似文章(,1)  相关文章(,1)  智慧教室(,1)  msxml2.XmlHttp(,1)  ubuntu(,1)  乌班图(,1)  甲骨文云(,1)  Nosupportedauthenticationmethodsavailable(,1)  批处理(,1)  bat(,1)  订阅号获取openid(,1)  批量修改文件名(,1)  publickey(,1)  msxml3.dll(,1)  系统未找到制定资源(,1)  折叠菜单(,1)  收缩菜单(,1)  .netframework(,1)  urlencode(,1)  ren(,1)  
 
最新评论
© 雨风的个人网站(分享一些学习笔记) 2016-2022 版权所有 渝ICP备2021003333号-1