为了账号安全,请及时绑定邮箱和手机立即绑定
  • IE 事件处理程序

    • attachEvent() 添加事件

    • detachEvent() 删除事件

    • 接收相同的两个参数:事件处理程序的名称和事件处理程序的函数

    不使用第三参数的原因:IE8 以及更早的浏览器版本只支持事件冒泡!

    https://img1.sycdn.imooc.com//5d089f1c0001708307240387.jpg

    https://img1.sycdn.imooc.com//5d089f160001bcbc09230616.jpg

    查看全部
  • 1、对于HTML事件来说,只能添加一个事件程序,且与JS的耦合过密,不利于后期的维护。

    2、对于DOM0级事件,可以添加多个事件程序,但是只会执行最后一个事件。

    3、对于DOM2级事件,同样可以添加多个事件程序,并且从上到下按顺序执行


    DOM2级事件定义了两个方法:

            用于处理指定和删除事件程序的操作,addEventListener()和removeEventListener()。

            这两个方法都需要接收三个参数:

                - 要处理的事件名

                - 作为事件处理程序的函数

                -  布尔值(true:捕获法,false:冒泡法)。


    查看全部
  • DOM0级事件处理程序 (用得比较多):先把元素取出来,然后为其属性添加一个事件的方法叫DOM0级处理程序。

    DOM0级事件处理程序:


    var y=document.getElementById('btn2');  取得btn2按钮对象。

    btn2.onclick=function(){

        alert('这是通过DOM0级添加的事件!')

    }

    btn2.onclick=null;    删除onclick属性


    查看全部
  • 事件流与事件冒泡顺序相反,由最大的节点传递到最小的节点。


    事件流有什么作用,为什么要使用事件流

    已采纳回答 / qq_倪洱_03939395

    组织对象的事件,更符合网页的产品需求比如点击A只要在页面内跳转位置,不需要跳转页面,则需要拦截事件流进行阻止比如点击一个全选按钮,要选择所有的列表项,则要进行事件冒泡捕获列表的整个父div然后选中


    查看全部
    0 采集 收起 来源:[DOM] 事件捕获

    2019-06-18

  • 事件冒泡:事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播至最不具体的那个节点(文档)。

    查看全部
    0 采集 收起 来源:[DOM] 事件冒泡

    2019-06-18

  • 添加事件处理程序 addEventListener(要处理的事件名,作为事件处理程序的函数,bool)


    查看全部
  • 代码

    <!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 ? event : window.event;

          if(event.stopPropagation) {

            event.stopPropagation();

          } else {

            event.cancleBubble=true;

          }

          menu.style.display="block";

        }  

        

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

        var addBg = function(ele) {

            ele.style.background='#999';

        }

        var removeBg = function(ele) {

            ele.style.background='#fff';

        }

        var removeBgs = function() {

            for(var i=0, len= as.length;i<len;i++) {

                removeBg(as[i]);

            }

        }

    var closeMenu = function(){

    index = -1;

            menu.style.display="none";

    }


        for(var i=0, len= as.length;i<len;i++) {

            as[i].onmouseover = function() {

    removeBgs();

                addBg(this);

            }

            as[i].onmouseout = function() {

                // this.style.background='#fff';

                removeBg(this);

            }

            as[i].onclick = function(e) {

                e = e ? e: window.event;

                if(e.stopPropagation) {

                    e.stopPropagation();

                }

                else {

                    e.cancleBubble=true;

                }

                title.innerHTML = this.innerHTML;

    closeMenu();

            }

        }

        

        document.onkeyup = function(e) {

            if (menu.style.display === "none") {

                return false;

            }


            var keyNum = e.keyCode,

    len = as.length;

            if(keyNum === 38) { //上方向

                if (index <= 0) {

                    index = len;

                }

                index--;

                removeBgs();

                addBg(as[index]);

            } else if(keyNum === 40) {  //下方向

                index++;

                if (index >= len) {

                    index = 0;

                }

                removeBgs();

                addBg(as[index]);

            } else if(keyNum === 13) {  //回车

                if (index === -1) {

                    return false;

                }

                removeBgs();

                as[index].click();

            }

        }


       // 点击页面空白处时

        document.onclick = function() {

            closeMenu();

        }

     }

       </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>


    查看全部
    0 采集 收起 来源:编程挑战

    2019-05-25

  • IE 中的事件对象

    • type 属性:获取事件类型

    • srcElement属性:获取事件目标

    • cancelBubble属性:阻止事件冒泡

    • returnValue属性:阻止事件的默认行为


    查看全部
  • 事件对象(event):在触发 DOM 上的事件时都会产生一个对象

    DOM 中的事件对象

    • type 属性:用于获取事件类型

    • target 属性:用于获取事件目标

    • stopPropagation() 方法,阻止时间冒泡

    • preventDefault() 方法,阻止事件的默认行为


    查看全部
  • 跨浏览器的事件处理程序

    var eventUtil={
        //添加句柄
        addHandler:function(element,type,handler//){
            if(element.addEventListener){
                element.addEventListener(type,handler,false);
            }else if(element.attachEvent){
                element.attachEvent//('on'+type,handler);
            }else{
                element['on'+type]=handler;//DOM0级事件处理程序判断
            }
        },
        //删除句柄
        removeHandler:function(element,type,handler){
            if(element.removeEventListener){
                element.removeEventListener(type,handler,false);
            }else if(element.detachEvent){
                element.detachEvent//('on'+type,handler);
            }else{
                element['on'+type]=null;//DOM0级事件处理程序判断
            }
        }
    }
    eventUtil.addHandler(btn3,'click',showMes);
    eventUtil.removeHandler(btn3,'click',showMes);


    查看全部
  • 三种事件处理

    1、对于HTML事件来说,只能添加一个事件程序,且与JS的耦合过密,不利于后期的维护。

    2、对于DOM0级事件,可以添加多个事件程序,但是只会执行最后一个事件。

    3、对于DOM2级事件,同样可以添加多个事件程序,并且从上到下按顺序执行

      DOM2级事件定义了两个方法:

            用于处理指定和删除事件程序的操作,addEventListener()和removeEventListener()。

            接收三个参数:要处理的事件名、作为事件处理程序的函数和  布尔值(true:捕获法,false:冒泡法)。


    查看全部
  • DOM0级事件处理程序 (用得比较多):先把元素取出来,然后为其属性添加一个事件的方法叫DOM0级处理程序。

    DOM0级事件处理程序:


    var y=document.getElementById('btn2');  取得btn2按钮对象。

    btn2.onclick=function(){

        alert('这是通过DOM0级添加的事件!')

    }

    btn2.onclick=null;    删除onclick属性


    查看全部
  • HTML事件处理程序(现在不建议使用了):事件直接加在HTML代码中
    缺点:HTML和js代码高耦合,如果修改,就要修改两个地方--HTML元素内和script函数。

    查看全部
  • 当在 子元素 与父元素同事添加onclick事件时, 注意考虑事件冒泡的情况

    例如:子元素的onclick事件执行了隐藏某个元素的事件,但父元素的onclick执行了显示这个元素的事件、当触发事件冒泡时,浏览器会先触发子元素的onclick 再 触发 父元素的onclick  就会把这个元素先隐藏又显示了、就会看不到js执行效果

    查看全部
  • 事件捕获:不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件。

    查看全部
    1 采集 收起 来源:[DOM] 事件捕获

    2019-02-18

举报

0/150
提交
取消
课程须知
1.你一定对HTML+CSS比较熟悉; 2.掌握一定的JS基础知识,尤其是函数封装、调用等知识。
老师告诉你能学到什么?
DOM事件具体相关知识,DOM事件的使用方法及应用!

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!