DOM事件探秘之二

3 事件对象

2 IE中的事件对象

(1)type属性 用于获取事件类型
(2)srcElement属性 用于获取事件目标
(3)cancelBubble()方法 用于阻止事件冒泡
设置为true表示阻止事件冒泡 ,设置为false表示不阻止冒泡。
(4)returnValue()方法 阻止事件的默认行为
设置为false表示阻止事件的默认行为

getEvent: function(event) { //获取事件
  return event ? event : window.event; //三元表示,可以用event就用event不可以就用window.event
},
getType: function(event) { //获取事件类型
  return event.type;
},
getElement: function(event) { //获取事件元素
  return event.target || event.srcElement;
},
preventDefault: function(event) { //阻止事件默认行为
  if (event.preventDefault) {
        event.preventDefault(); //如果支持event.preventDefault方法就用这个
  } else {
        event.returnValue = false; //否则使用returnValue方法
        }
},
stopPropagation: function(event) { //阻止事件冒泡
  if (event.stopPropagation) {
    event.stopPropagation(); //如果支持stopPropagation方法就使用这个
  } else {
       event.cancelBubble = true; //否则使用cancelBubble方法
        }
}

事件对象的实例:用户点击登录按钮时会弹出一个登录框,取消时登录框也会退出。效果如下:
这里写图片描述
【完整实例代码】:

<!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;
        cursor:pointer;//鼠标样式
    }
    </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) {
                ele.addEventListener(type, hander, false);
            } else if (ele.attachEvent) {
                ele.attachEvent('on' + type, hander);
            } else {
                ele['on' + type] = hander;
            }
        }
        // 显示登录层函数
        function showLogin() {
            // 执行代码
            login_box.style.display = 'block';
        }
        // 隐藏登录层函数
        function hideLogin() {
            // 执行代码;
            login_box.style.display = 'none';
        }
        //点击登录按钮显示登录层 
        // 执行代码
        addEvent(login_btn, 'click', showLogin);
        //点击关闭按钮隐藏登录层
        // 执行代码
        addEvent(close, 'click', hideLogin);
    }
    </script>
</head>

<body>
    <div class="head">亲,您好!
        <input type="button" value="登 录" id="login">
    </div>
    <div id="login_box">
        <p>用户登录</p><span id="close">X</span>
    </div>
</body>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值