问答详情
源自:5-1 编程挑战

在document加点击事件为什么就不显示了 阻止了冒泡

<!doctype html>

<html>


<head>

    <meta charset="UTF-8">

    <title>下拉菜单</title>

    <style type="text/css">

body,ul,li{ margin:0; padding:0; font-size:13px;}

ul,li{list-style:none;}

#divselect{width:186px; margin:80px auto; position:relative; z-index:10000;}

#divselect cite{width:150px; height:24px;line-height:24px; display:block; color:#807a62; cursor:pointer;font-style:normal;

padding-left:4px; padding-right:30px; border:1px solid #333333; 

background:url(xjt.png) no-repeat right center;}

#divselect ul{width:184px;border:1px solid #333333; background-color:#ffffff; position:absolute; z-index:20000; margin-top:-1px; display:none;}

#divselect ul li{height:24px; line-height:24px;}

#divselect ul li a{display:block; height:24px; color:#333333; text-decoration:none; padding-left:10px; padding-right:10px;}

</style>

<script type="text/javascript">

    window.onload = function () {

        var box = document.getElementById('divselect'),

            title = box.getElementsByTagName('cite')[0],

            menu = box.getElementsByTagName('ul')[0],

            as = box.getElementsByTagName('a'),

            index = -1;


        // 点击三角时

        title.onclick = function (event) {

            event = event || window.event;

            if (event.stopPropagation) {

                event.stopPropagation;

            }

            else {

                event.cancelBubble = true;

            }     //阻止冒泡事件

            menu.style.display = 'block';

            // 执行脚本


        }


        // 滑过滑过、离开、点击每个选项时

        // 执行脚本

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

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

            oLis[i].onmouseover = function () {

                this.style.background = '#567';

            }

            oLis[i].onmouseout = function () {

                this.style.background = '#FFF';

            }

            oLis[i].onclick = function (event) {

                event = event || window.event;

                event.stopPropagation ? event.stopPropagation : event.cancelBubble = true;

                title.innerHTML = this.innerHTML;

                menu.style.display = 'none';

            }

        }

        // 点击页面空白处时

        // 执行脚本

        document.onclick=function(event){

            event=event||window.event;

            event.stopPropagatio?event.stopPropagation:event.cancelBubble=true;

            menu.style.display='none';


        }

      

    }

</script>

</head>


<body>

    <div id="divselect">

        <cite>请选择分类</cite>

        <ul>

            <li id="li"><a href="javascript:;" selectid="1">ASP开发</a></li>

            <li><a href="javascript:;" selectid="2">.NET开发</a></li>

            <li><a href="javascript:;" selectid="3">PHP开发</a></li>

            <li><a href="javascript:;" selectid="4">Javascript开发</a></li>

            <li><a href="javascript:;" selectid="5">Java特效</a></li>

        </ul>

    </div>

</body>


</html>

加粗的这一行,如果删掉就能显示Menu 我阻止了冒泡啊 为什么不行呢?


提问者:Coffeeed 2017-03-04 18:20

个回答

  • frontendsophie
    2017-03-05 21:07:49
    已采纳

    23行应该是event.stopPropagation();    另外document的onclick事件里阻止冒泡没意义- -