js, 树状菜单隐藏显示

js写的不是很严谨~~~嘿嘿

 

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<style>

#ul_tree ul {

    display: none;

}

 

</style>

<title>树状菜单</title>

</head>

<body>

 

<ul id="ul_tree">

<li><a href="javascript:void(0)">a</a>

    <ul class="ul-second">

        <li><a href="javascript:void(0)">aa</a>

            <ul>

                <li><a href="javascript:void(0)">aa</a>

                <li><a href="javascript:void(0)">aa</a>

                <li><a href="javascript:void(0)">aa</a>

            </ul>

        </li>

        <li><a href="javascript:void(0)">ab</a>

            <ul>

                <li><a href="javascript:void(0)">bb</a>

                <li><a href="javascript:void(0)">bb</a>

                <li><a href="javascript:void(0)">bb</a>

            </ul>

        </li>

        <li><a href="javascript:void(0)">ac</a></li>

        <li><a href="javascript:void(0)">ad</a></li>

    </ul>

</li>

<li><a href="javascript:void(0)">b</a>

    <ul class="ul-second">

        <li><a href="javascript:void(0)">ba</a></li>

        <li><a href="javascript:void(0)">bb</a></li>

        <li><a href="javascript:void(0)">bc</a></li>

        <li><a href="javascript:void(0)">bd</a></li>

    </ul>

</li>

<li><a href="javascript:void(0)">c</a>

    <ul class="ul-second">

        <li><a href="javascript:void(0)">ca</a></li>

        <li><a href="javascript:void(0)">cb</a></li>

        <li><a href="javascript:void(0)">cc</a></li>

        <li><a href="javascript:void(0)">cd</a></li>

    </ul>

</li>

<li><a href="javascript:void(0)">d</a>

    <ul class="ul-second">

        <li><a href="javascript:void(0)">da</a></li>

        <li><a href="javascript:void(0)">db</a></li>

        <li><a href="javascript:void(0)">dc</a></li>

        <li><a href="javascript:void(0)">dd</a></li>

    </ul>

</li>

</ul>

<script>

(function(){

    var links = document.getElementsByTagName('a');

    for(var i = 0; i < links.length; i++){

        links[i].addEventListener('click', function(e){

            setDisplay(e.target);

            

        });

    }

    

})();

 

function setDisplay(obj){

    var fatherLi = getParent(obj, 'li');

    var childUl = getFirstLevelChild(fatherLi, 'ul');

    if(childUl.length > 0){

        //console.log(childUl[0].style.display);

        

        if(childUl[0].style.display == ''){

            childUl[0].style.display = "none";

        }

        if(childUl[0].style.display == 'block'){

            childUl[0].style.display = "none";

        }else {

            childUl[0].style.display = "block";

        }

        

    }

}

function getFirstLevelChild(obj, tagname){

    var children = obj.childNodes;

    var returns = new Array();

    for(var i = 0, j = 0; i < children.length; i++){

        if(children[i].nodeName.toLowerCase() == tagname.toLowerCase()){

            returns[j] = children[i];

            j++;

        }

    }

    

    return returns;

}

 

function getParent(obj, parentTag){

    //console.log(obj);

    //alert();

    var returns;

    var _parent = obj.parentNode;

    //console.log(_parent);

    //console.log(_parent.nodeName);

    if(_parent.nodeName.toLowerCase() == parentTag.toLowerCase()){

        returns = _parent;

    }else{

        returns = getParent(_parent, parentTag);

    }

    return returns;

}

 

 

</script>

</body>

</html>

原文地址:https://www.cnblogs.com/helkbore/p/5353384.html