为什么addEvent监听会立即执行呢

来源:3-3 编程练习

慕粉3210555

2018-06-06 23:07

<!doctype html>
<html lang="en">
<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');
            var  login_box1= document.getElementById('login_box');
            var   close1 = document.getElementById('close');

            // 封装添加事件监听程序
 function addEvent(ele, type, hander) {
                if (ele.addEventListener) {
                    //谷歌
 ele.addEventListener(type, hander, false);
                } else if (ele.attachEvent) {
                    ele.attachEvent('on' + type, handler);
                } else {
                    ele['on' + type] = handler;
                }
            }
            // 显示登录层函数
 function showLogin() {
                // 执行代码
 login_box1.style.display = 'block'
 }
            // 隐藏登录层函数
 function hideLogin() {
                // 执行代码
 login_box1.style.display = 'none';
            }
            //点击登录按钮显示登录层
            // 执行代码
 addEvent(login_box1, 'click', showLogin());
            //点击关闭按钮隐藏登录层
            // 执行代码
 addEvent(close1, 'click', hideLogin());
        }
    </script>
</head>
<body>
<div class="head">亲,您好!<input type="button" value="登 录" id="login"></div>
<div id="login_box">
    <p>用户登录</p><span id="close"></span>
</div>
</body>
</html>


初始化的时候问什么就会执行addEvent这两个呢

写回答 关注

3回答

  • 小鱼江中游
    2018-08-10 23:04:41
    ele['on' + type] = handler;

    感觉是这里写错了,把handler写在前面,应该可以了吧

  • ella_rm
    2018-07-25 19:07:40
    addEvent(ele, type, hander)这个函数用错了。这里hander指的是传入一个函数名,也就是不要带圆括号,这里不是调用函数。


  • 慕无忌2083049
    2018-06-09 23:14:34
    addEvent(login_box1, 'click', showLogin());

    中showLogin()的括号去掉试一下?是不是就不执行了?

DOM事件探秘

DOM事件?本课程会通过实例来给小伙伴们讲解如何使用这些事件

99544 学习 · 1197 问题

查看课程

相似问题