首页 /  技术专区  /  JavaScript 宽屏模式 >

JavaScript事件监听、环境对象this、回调函数

1. 事件监听

什么是事件?

    事件是在编程时系统内发生的动作或者发生的事情

    比如用户在网页上单击一个按钮

什么是事件监听?

    就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为 绑定事件或者注册事件

    比如鼠标经过显示下拉菜单,比如点击可以播放轮播图等等


语法:

元素对象.addEventListener('事件类型识', 要执行的函数)


事件监听三要素:

事件源:那个dom元素被事件触发了,要获取dom元素

事件类型:用什么方式触发,比如鼠标单击click、鼠标经过mouseover等

事件调用的函数:要做什么事


举例说明:

const button = document.querySelector('button')
button.addEventListener('click', function() {
    console.log('你点击了!')
})


注意:

1. 事件类型要加引号

2.函数是点击之后再去执行,每次点击都会执行一次


2. 事件监听版本

DOM LO

事件源.on事件 = function() {}


DOM L2

事件源.addEventListener(事件, 事件处理函数)


区别:

on方式会被覆盖,addEventListener方式可绑定多次,拥有事件更多特性,推荐使用


发展史:

DQM L0:是 DOM 的发展的第一个版本; Llevel

DOM L1DOM级别1于1998年10月1日成为 W3C 推荐标准

DOM L2使用 addEventListener 注册事件

DOM L3DOM3 级事件模块在 DOM2 级事件的基础上重新定义了这些事件,也添加了一些新事件类型


3. 事件类型

Image.png

鼠标事件:

click 鼠标点击

    <button>点我</button>
    <script>
        const btn = document.querySelector('button')
        
        btn.addEventListener('click', function() {
            console.log('你点到我了!')
        })
    </script>


mouseenter 鼠标经过

    <button>按钮</button>
   
    <script>
        const btn = document.querySelector('button')
       
        btn.addEventListener('mouseenter', function() {
            console.log('我进来了!')
        })
    </script>


mouseleave 鼠标离开

    <button>按钮</button>
   
    <script>
        const btn = document.querySelector('button')
       
        btn.addEventListener('mouseleave', function() {
            console.log('我出来了!')
        })
    </script>


焦点事件:

focus 获得焦点

    <input></input>
   
    <script>
        const ipt = document.querySelector('input')
       
        ipt.addEventListener('focus', function() {
            console.log('获得焦点!')
        })
    </script>


blur 失去焦点

    <input></input>
   
    <script>
        const ipt = document.querySelector('input')
       
        ipt.addEventListener('blur', function() {
            console.log('失去焦点!')
        })
    </script>


键盘事件:

keydown 键盘按下触发

    <input></input>
   
    <script>
        const ipt = document.querySelector('input')
       
        ipt.addEventListener('keydown', function() {
            console.log('键盘按下')
        })
    </script>


keyup 键盘抬起触发

    <input></input>
   
    <script>
        const ipt = document.querySelector('input')
       
        ipt.addEventListener('keyup', function() {
            console.log('键盘抬起')
        })
    </script>


文本事件:

input 用户输入事件

    <input></input>
   
    <script>
        const ipt = document.querySelector('input')
       
        ipt.addEventListener('input', function() {
            console.log('您输入了内容!')
        })
    </script>


4. 获取事件对象

事件对象是什么

    也是个对象,这个对象里有事件触发时的相关信息

    例如:鼠标点击事件中,事件对象就存了鼠标点在哪个位置等信息

使用场景

    可以判断用户按下哪个键,比如按下回车键可以发布新闻

    可以判断鼠标点击了哪个元素,从而做相应的操作


语法:如何获取

    在事件绑定的回调函数的第一个参数就是事件对象

    一般命名为event、ev、e

元素.addEventListener('click', function(e) {
    console.log(e)
})


部分常用属性

type

    获取当前的事件类型

clientX/clientY

    获取光标相对于浏览器可见窗口左上角的位置

offsetX/offsetY

    获取光标相对于当前DOM元素左上角的位置

key

    用户按下的键盘键的值

    现在不提倡使用keyCode


5. 环境对象

环境对象:指的是函数内部特殊的变量 this,它代表着当前函数运行时所处的环境

作用:弄清楚 this 的指向,可以让我们代码更简洁

函数的调用方式不同,this 指代的对象也不同

[ 谁调用, this 就是谁 ] 是判断 this 指的粗略规则

直接调用函数,其实相当于是 window.函数,所以 this 指代 window

    <button>按钮</button>
    <script>
        const btn = document.querySelector('button')
        
        btn.addEventListener('click', function(e) {
            console.log(this)
        })
    </script>


6. 回调函数

如果将函数 A 做为参数传递给函数 B 时,我们称函数 A 为回调函数

简单理解: 当一个函数当做参数来传递给另外一个函数的时候,这个函数就是回调函数

常见的使用场景:

function fn() {
    console.log('我是回调函数!')
}
setInterval(fn, 1000)

btn.addEventListener('click', function(e) {
    console.log('我也是回调函数!')
})




头像
0/200
图片验证码