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 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发