问答详情
源自:3-3 编程练习

addEvent(close,'click',hideLogin);这句里面为什么用close实现不了????

<!doctype html>

<html>

<head>

    <meta charset="UTF-8">

<title>Document</title>

<style>

*{margin:0;padding:0;}

     .head{font-size:12px;padding:6px 0 0 10px;}

     #login_box{width:300px;height:150px;background:#eee;

     border:1px solid #ccc;position:absolute;left:50%;top:50%;margin-left:-150px;margin-top:-75px;display:none;}

     #login_box p{height:20px;border-bottom:1px solid #ccc;font-size:12px;padding:6px 0 0 5px;font-weight:bold;}

     #close{width:14px;height:14px;background:url(close.png) no-repeat;position:absolute;right:4px;top:6px;}

</style>

<script>

      window.onload=function(){

       var login_btn=document.getElementById('login'),

           login_box=document.getElementById('login_box'),

           close=document.getElementById('close');

       // 封装添加事件监听程序

       function addEvent(ele,type,hander){

           if(ele.addEventListener){//dom2级事件处理程序判断

            ele.addEventListener(type,hander,false);

        }else if(ele.attachEvent){//IE事件处理程序判断

            ele.attachEvent('on'+type,hander);

        }else{//DOM0级事件处理程序判

            ele['on'+type]=hander;

           }

       }

        // 显示登录层函数

        function showLogin(){

              login_box.style.display='block';

        }

        // 隐藏登录层函数

        function hideLogin(){

            login_box.style.display='none';

        }

      

        //点击登录按钮显示登录层

        // 执行代码

        addEvent(login_btn,'click',showLogin);//login_btn这个是怎么理解?

        //点击关闭按钮隐藏登录层

        // 执行代码

        addEvent(close,'click',hideLogin);

      }  

</script>

</head>

<body>

<div>亲,您好!<input type="button" value="登 录" id="login"></div>

<div id="login_box">

<p>用户登录</p><span id="close"></span>

</div>

</body>

</html>


提问者:qq_枫_ 2016-12-06 20:21

个回答

  • 飞向银河系
    2016-12-06 20:45:48
    已采纳

    因为时间冒泡了呀,你用close来hideLogin的同时冒泡到了 login_box来showLogin了,你对hideLogin函数里加一句阻止事件冒泡就可以解决这个问题了

  • crystal_snow
    2016-12-06 20:42:41

    函数addEvent有三个参数(ele,type,hander),这里的login_btn是第一个参数,就是需要添加时间的元素