lv_qinyu 2016-09-12 13:59 采纳率: 0%
浏览 1129
已采纳

一个关于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>

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

  • 写回答

4条回答

  • Mop.Duan 2016-09-12 14:28
    关注

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

    {

    if (e && e.stopPropagation)

    e.stopPropagation()

    else
    window.event.cancelBubble=true
    }

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办