zoukankan      html  css  js  c++  java
  • 三级菜单---zhufeng

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>无标题文档</title>
    <style type="text/css">
    li{ margin:5px 0; }
    </style>

    </head>

    <body style="background:#ccc;">
    <div id="menu" style="240px; background:#fff;">
     <ul>
         <li><span>第一级第一个</span></li>
            <li><span>第一级第二个</span>
                <ul>
                <li><span>第二级第一个</span></li>
                <li><span>第二级第二个</span></li>
                <li><span>第二级第三个</span>
                 <ul>
                        <li><span>第三级第一个</span></li>
                        <li><span>第三级第二个</span></li>
                        <li><span>第三级第三个</span></li>
                        <li><span>第三级第四个</span></li>
                    </ul>
               
                </li>
                <li><span>第二级第四个</span></li>
                </ul>
           
            </li>
            <li><span>第一级第三个</span></li>
            <li><span>第一级第四个</span>
             <ul>
                    <li><span>第二级第一个</span></li>
                    <li><span>第二级第二个</span></li>
                    <li><span>第二级第三个</span></li>
                    <li><span>第二级第四个</span></li>
                </ul>
           
            </li>
        </ul>
    </div>
    </body>
    </html>
    <script type="text/javascript" src="DOM.js"></script>
    <script type="text/ecmascript">
    //如果有下一级菜单,则green,如果是终极 blue

    var menu=document.getElementById('menu');
    var oLis=document.getElementsByTagName('li');

    for(var i=0;i<oLis.length;i++){
     var oLi=oLis.item(i);
     var oSpan=DOM.children(oLi,'span')[0];
     var aUl=DOM.children(oLi,'ul');
      if(aUl.length){//为true,表示它有下一级菜单
       aUl[0].style.display="none";   
       oSpan.style.backgroundColor="green";   
      }else{
       oSpan.style.backgroundColor="#09f";
      }
    }

    menu.onclick=function(e){
     e=e||window.event;
     var t=e.target||e.srcElement;
     if(t.nodeName!='SPAN') return;
     var next=DOM.siblings(t)[0] ;
     //Math
     if(next){
      if(next.style.display=="none"){
       next.style.display="block";
      }else{
       next.style.display="none";
       var oUls=next.getElementsByTagName('ul');
       for(var i=0;i<oUls.length;i++){    
        oUls[i].style.display="none";
       }
      }
     } 
    }

    </script>

    var DOM={};//命名空间,起分类的作用。单例模式
    BOM={};

    DOM.children=function (parent,nodeName){
     console.log(arguments.callee.caller)//
     var a=[];
     var childNodes=parent.childNodes; 
     for(var i=0;i<childNodes.length;i++){
      var child=childNodes[i];
     if(typeof nodeName=="undefined"&&child.nodeType==1||typeof nodeName=="string"&&child.nodeName==nodeName.toUpperCase()){
      a.push(child)
     }
     }
     return a;
    }

    DOM.siblings=function (ele){ 
     var a=[]; 
     for(var p=ele.previousSibling;p;p=p.previousSibling){
      if(p.nodeType==1){
       
       a.unshift(p); 
      }  
     } 
     var n=ele.nextSibling;
     while(n){
      if(n.nodeType==1){
       a.push(n);   
      }
      n=n.nextSibling;  
     }
     return a;
    }


    DOM.getIndex=function(ele){
     var nIndex=0;
     var p=ele.previousSibling;
     while(p){
      if(p.nodeType==1){
       nIndex++
      }
      p=p.previousSibling;
      
     }
     return nIndex;
    }


    DOM.getElesByClass=function (strClass,context){ 


     function byClassName(strClass,eles){
      var reg=new RegExp("file://b%22+strclass+%22//b");
      var a=[];
      for(var i=0;i<eles.length;i++){
       var ele=eles[i];
       if(reg.test(ele.className)){a.push(ele); } 
      } 
      return a; 
     }

     context=context||document;
     if(context.getElementsByClassName){
      return context.getElementsByClassName(strClass); 
      
     }
     strClass=strClass.replace(/^ +| +$/g,"");
     var aClass=strClass.split(/ +/);
     var eles=context.getElementsByTagName("*");  
     for(var i=0;i<aClass.length;i++){  
      eles=byClassName(aClass[i],eles);  
     } 
     return eles; 
    }

    DOM.addClass=function(ele,strClass){ 
     var reg=new RegExp("file://b%22+strclass+%22//b");
     if(!reg.test(ele.className))
      ele.className+=" "+strClass; 
    }
    DOM.removeClass=function(ele,strClass){ 
     var reg=new RegExp("file://b%22+strclass+%22//b%22,%22g");
     ele.className=ele.className.replace(reg,"");
    }

  • 相关阅读:
    nginx windows could not build server_names_hash, you should increase server_names_hash_bucket_size: 32
    两个spring boot项目war部署到tomcat 其中一个无法正常启动
    spring boot 集成axis1.4 java.lang.NoClassDefFoundError: Could not initialize class org.apache.axis.client.AxisClient
    springmvc 控制器 读取properties文件
    EntityFramework+EntityFramework.SqlServerCompact部署网站
    Dapper+SqlServerCe部署
    swagger.net 使用nginx 代理时出现端口号导致出错
    vs2017 EFCore 迁移数据库命令
    itextsharp html转成pdf 特殊符号异常处理
    java web项目部署到tomcat 8.5 此驱动程序不支持 Java Runtime Environment (JRE) 1.8 版。请使用支持 JDBC 4.0 的 sqljdbc4.jar 类库
  • 原文地址:https://www.cnblogs.com/xiaoleidiv/p/3443110.html
Copyright © 2011-2022 走看看