码迷,mamicode.com
首页 > 其他好文 > 详细

简单的折叠菜单..

时间:2016-08-09 22:08:04      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

1.先来一个的,就是一个ul菜单主里面包含一个a标签和一个ol子菜单,代码如下:

<head>
    <meta charset="UTF-8">
    <title>折叠菜单</title>
                    <!--设置页面加载完成后子菜单样式为隐藏 -->
    <style>
        #ool {
            display:none;
        }
    </style>
</head>

<body>
   <ul>
         <li>
            <a href="###"  onclick="show();">主菜单</a>
            <ol  id="ool">
                <li><a href="">子菜单1</a></li>
                <li><a href="">子菜单2</a></li>
                <li><a href="">子菜单3</a></li>
            </ol>
         </li>
  </ul>

<script>
        var i = 0;     //先定义一个全局变量并赋值为0;
        function show() {     //定义一个函数show();
        if(i == 0){
            document.getElementById(‘ool‘).style.display = ‘block‘;
           i = 1;
       }else{
           document.getElementById(‘ool‘).style.display = ‘none‘;
           i = 0;
       }
    }
</script>
</body>

2.当主菜单有好几个的时候,这他喵就麻烦了。下面这个方法是请教老师的。

????:为什么自己没有这种思维和方法?

就来三个主菜单吧,代码如下:

<head>
    <meta charset="UTF-8">
    <title>折叠菜单</title>

    <!--设置页面加载完成后子菜单样式为隐藏 -->
    <style>
        ol {
            display:none;
        }
    </style>
</head>

<body>
     <ul>
         <li>
            <a href="###" status="0" onclick="show(this);">主菜单1</a><ol > //注意这里:因为下面JS用到了nextSibling这个获取a标签下一个兄弟元素的方法,所以
                                                  <ol>要紧贴</a>,不能留空格,要不获取不到ol标签。还有就是show(this)
                                                  里面的this代表当前对象;也就是a标签,下面的obj就是它的形参,a为实参。
                <li><a href="">子菜单1</a></li>
                <li><a href="">子菜单2</a></li>
                <li><a href="">子菜单3</a></li>
            </ol>
         </li>

         <li>
                <a href="###" status="0" onclick="show(this);">主菜单2</a><ol >
                <li><a href="">子菜单1</a></li>
                <li><a href="">子菜单2</a></li>
                <li><a href="">子菜单3</a></li>
            </ol>
        </li>


         <li>
                <a href="###" status="0" onclick="show(this)">主菜单3</a><ol>
                <li><a href="" >子菜单1</a></li>
                <li><a href="">子菜单2</a></li>
                <li><a href="">子菜单3</a></li>
            </ol>
        </li>
     </ul>

<script> 
     //在写函数之前先给每个主菜单下的a标签设置一个状态属性,也就是代码中的status=‘0‘;和上面一个主菜单时设置i=‘0‘时一样的道理。
     function show(obj) {             //定义一个含有参数的函数show();参数obj其实就是代表主菜单下的a标签;
           var i = obj.getAttribute(‘status‘);       //获取obj的属性status;
           if(i == 0){
             obj.nextSibling.style.display = ‘block‘;  //obj(a)下一个兄弟元素也就是ol标签的样式中的display属性从默认的‘none‘变为‘block‘;
             obj.setAttribute(‘status‘,1);            //设置obj(a)的状态属性也就是开始就设置的status从开始的0变为1;
         }else{
             obj.nextSibling.style.display = ‘none‘;
             obj.setAttribute(‘status‘,0);
           }
    }
</script>
</body>

从上面看到,其实JS代码也是极少,主要还是要学习和培养这中思维。不是不懂,是想不到...........

简单的折叠菜单..

标签:

原文地址:http://www.cnblogs.com/lss-bk/p/5754545.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!