HTML中的DOM事件

一、事件

        1、事件

        事件,就是函数在某种状态下被调用.JS捕捉到的发生在网页上的行为,官方称为事件句柄,是交互体验的核心功能。官方调用的称为事件。事件分为两种:用户交互时触发的函数,称为交互事件;自发地在某个时刻调用的函数,称为生命周期函数,又叫做钩子。

        事件三要素:事件源、事件类型、事件处理程序。

        2、绑定事件

        (1)行内样式绑定:在行内样式中,添加一个属性,属性名为“on+事件名”,属性值是一个函数调用。在script标签中对函数进行定义。

<div class="box" onclick="fn()">点击</div>
<script>
    function fn(){
        console.log(111)            
    }
</script>

        (2)元素属性绑定:获取元素后,使用点语法对元素添加一个属性,属性名为“on+事件名”,给这个属性赋值一个事件处理程序(函数)。

<div class="box">点击</div>
<script>
    var box = document.querySelector('.box')
    box.onclick = function (){
        console.log(111)
    }
</script>

         (3)H5新增的方法addEventListener()绑定,有三个参数,第一个为事件类型,是字符串类型,第二个为事件处理函数,第三个为是否在捕获阶段触发,默认false,在冒泡阶段触发。

<div class="box">点击</div>
<script>
    var box = document.querySelector('.box')
    box.addEventListener('click',function(){
        console.log(111)
    })
</script>

二、主要事件

       1、鼠标事件

        click:鼠标单击。dblclick:鼠标双击。

        mousedown:鼠标按下。mouseup:鼠标松开。

        mousemove:鼠标在元素上连续滑动,会连续触发,可以用来获取鼠标的当前坐标。

        mouseover:鼠标进入元素或者元素内的子元素

        mouseout:鼠标离开,在子元素内移动还是会触发。

        mouseenter(html5标准):鼠标进入元素时触发一次,包括子元素,即使子元素超出了父元素的范围。

        mouseleave(html5标准):鼠标完全离开元素,也就是从事件源元素离开到另一个范围,这个范围不包括子元素的范围。

        2、键盘事件

        keydown:某个键被按下。keyup:某个键被松开。

        keypress:与mousemove类似,是一个连续状态,某个键被一直按着,就会一直触发。

        3、输入框事件

        input:检测input框的聚焦状态下的文本变化。

        change:当input框文本内容对比聚焦前的文本发生改变时触发。

        focus:input聚焦时触发。blur:input框失焦时触发。

三、解绑事件

        对于使用行内样式和元素属性绑定的,在解绑时,对一个元素通过绑定一个事件,在函数的执行体中给其他的元素的绑定属性赋值为空,或者其他字符都可以,实质上就是让这个属性不再指向绑定事件的处理程序。

        对于使用addEventListener添加的监听器,解绑时使用removeEventListener移除监听器,参数与添加的参数一样。从参数一样,可以得出,第二个参数必须是传的外部已经定义好的函数,因为函数是属于引用数据,这样才能使两次的函数指向同一个。

        那么对于添加监听器时,第二个参数为函数直接量的绑定,用removeEventListener就不行了,即使将addEventListene中的这个函数直接量粘贴到removeEventListener中,他们也不是同一个东西,两者所指向的地址不同。这种需要将removeEventListener放在addEventListene中,使用arguments.callee,指向正在执行的函数本身的引用,这样就保证两个的引用地址一样。

<script>
    function fn3(){
        var inpu = document.querySelector('input')
        var box = document.querySelector('.box')
        console.log('解绑按钮')
        inpu.onkeypress = null;
        inpu.onfocus = null;
        inpu.onblur = null;
        box.removeEventListener('mouseout',fn)
    }
    var box = document.querySelector('.box')
    function fn(){console.log(111)}
    box.addEventListener('mouseout',fn)
    box.addEventListener('dblclick',function(){
        console.log('双击事件')
        box.removeEventListener("dblclick" , arguments.callee);
    })
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值