一个关于js做的层次列表,有一点点问题,请大家帮忙看一下,谢谢啦

使用js做的一个列表层次,在点击加号后,列表展开,里面有好几个选项,但是点击选项之后,列表就自动关闭了,不知道我哪里的属相设置的有问题,以下是我的js的代码

 <script type="text/javascript">
    window.onload=setfunction;
    function setfunction(){
        var lis=document.getElementsByTagName("li");
        for(var i=0;i<lis.length;i++){
            if(lis[i].className=="open"){
                lis[i].onmouseup=handlemouseup;
            }
        }
    }
    function handlemouseup(){
        var state;
        if(this.className=="open"){
            this.className="close";
            state="block";
        }
        else if(this.className=="close"){
            this.className="open";
            state="none";
        }
        var ulobj=this.getElementsByTagName("ul");
        ulobj[0].style.display=state;
    }
    </script>

列表是的层次是这样的

 <ul>
   <li>   
        <ul>
          <li></li>
           <li></li>
           <li></li>
       </ul>
   </li>
<li>   
        <ul>
          <li></li>
           <li></li>
           <li></li>
       </ul>
   </li>
</ul>

但是结果在执行的时候就成了不管点列表里面的哪一个,列表都会关闭,不知道有没有懂的人帮忙看一下问题,谢谢大家啦~~

事件冒泡的原因,因为你的设置了父节点onmouseup,子节点虽然没有这个事件,但是点击子节点时,事件冒泡,会执行父节点的相同事件,阻止事件冒泡就好了。
function stopBubble(e)

{

if (e && e.stopPropagation)

e.stopPropagation()

else
window.event.cancelBubble=true
}

把这个stopBubble(e)函数放到你想要的阻止事件冒泡函数里面就可以阻止事件冒泡了

没看代码,太乱了,问题应该是选择器选择的对象搞错了

谢谢,我粘上去没想到成了这样,我看看,是不是选择器出错

=========给你写个完整代码吧,如果//stopBubble(e); 注掉就会弹出两个框框,如果没有注掉就只有pp那个框框。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>冒泡测试</title>
</head>
<body>
    <div id="dd">
        <div id="pp">clickme</div>
    </div>
    var pp = document.getElementById("pp");
    var dd = document.getElementById("dd");
    pp.onclick=function(e){ //给pp设置点击事件
            alert("我是pp!");
            //stopBubble(e); 
    };
    dd.onclick=function(e){ //给dd设置点击事件
            alert("我是dd!");
    };
    function stopBubble(e)
    {
        if (e && e.stopPropagation)
            e.stopPropagation()
        else 
            window.event.cancelBubble=true 
    }
    </script>
</body>
</html>