JS-Web API-day02

一、事件监听(绑定)

1.1 事件监听

事件:编程时系统内发生的动作或者发生的事情。比如用户在网页上单击一个按钮

事件监听:

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

语法:

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

事件监听三要素:

        事件源:被触发的dom元素

        事件类型:什么方式触发就是什么类型比如鼠标点击,鼠标滑过,进入,页面滑动等

        事件调用的函数:事件触发之后要做的事情

例:获得焦点事件

  const input = document.querySelector('input')
  //获得焦点
  input.addEventListener('focus',function (){
    console.log(('有焦点触发'));
  })

1.2 事件监听版本

发展史:

        DOM L0 :是 DOM 的发展的第一个版本; L:level

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

        DOM L2:使用addEventListener注册事件

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

DOM L0

        事件源.on事件 =  function{}

DOM L2

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

区别:

        on方式时间会被覆盖,addEventListener方式可以给同一个对象多次绑定事件,用有事件更多特性

二、事件类型

2.1 鼠标事件-鼠标触发

2.1.1 click-鼠标点击事件

事件类型 click

<body>
<button>点击</button>
<script>
    //鼠标触发事件

    //需求:点击了按钮,弹出一个对话框
    //事件源 按钮
    //事件类型 点击鼠标
    // 事件处理程序,谈出对话框
    const  button  = document.querySelector('button')
    // 实际就是为button 写了一个方法 click  可以button.click()调用
    //鼠标点击 click
    button.addEventListener('click',function (){
        alert('你好呀')
    })   //click鼠标点击    多次点击多次执行

</body>

2.1.2 mouseenter-鼠标经过事件

事件类型 mouseenter

<style>
    div{
        width: 500px;
        height: 300px;
        background-color: lightskyblue;
    }
</style>
<body>
<div>123</div>
<script>
    //鼠标触发事件

    const div = document.querySelector('div')
    // 鼠标经过 mouseenter
    div.addEventListener('mouseenter',function () {
        alert('轻轻的我走了')
    })
</script>
</body>

2.1.3 mouseleave-鼠标离开事件

事件类型:mouseleave

<style>
    div{
        width: 500px;
        height: 300px;
        background-color: lightskyblue;
    }
</style>
<body>
<div>123</div>
<script>
    //鼠标离开 mouseleave
    div.addEventListener('mouseleave',function () {
        alert('轻轻的我走了,挥一挥衣袖,不带走一片云彩')
    })
</script>
</body>

2.2 焦点事件-表单获得光标

2.2.1 focus-获得焦点事件

事件类型:focus

<body>
<input type="text">
<script>
  //焦点事件
  const input = document.querySelector('input')
  //获得焦点
  input.addEventListener('focus',function (){
    console.log(('有焦点触发'));
  })
</script>
</body>

2.2.2 blur-失去焦点事件

事件类型:blur

<body>
<input type="text">
<script>
  //焦点事件
  const input = document.querySelector('input')
  //失去焦点
  input.addEventListener('blur',function (){
    console.log(('失去焦点触发'));
  })

</script>
</body>

2.3 键盘事件-键盘触发

2.3.1 Keydown-键盘按下触发

事件类型:Keydown

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

2.3.2 Keyup-键盘抬起触发

事件类型:Keyup

<body>
<input type="text">
<script>
    const input = document.querySelector('input')
    input.addEventListener('keypress',function (){
        console.log('键盘弹起来')
    })
</script>
</body>

2.4 文本事件-表单输入触发

2.4.1 input-用户输入事件

事件类型:input

<body>
<input type="text">
<script>
  const input = document.querySelector('input')
  //文本事件
  input.addEventListener('input',function (){
      console.log(input.value)
  })
</script>
</body>

还有change事件,检测文本框里面的值是否发生改变

2.5 鼠标经过事件的区别

mouseover 和 mouseout 会有冒泡效果 

mouseenter 和 mouseleave 没有冒泡效果 (推荐)

但是没有事件冒泡的鼠标经过事件有时候也会有作用

2.6 两种注册事件的区别 

传统on注册(L0)

        同一个对象,后面注册的事件会覆盖前面注册(同一个事件)

        直接使用null覆盖偶就可以实现事件的解绑

        都是冒泡阶段执行的

事件监听注册(L2)

        语法: 元素对象.addEventListener(事件类型, 事件处理函数, 是否使用捕获)

        后面注册的事件不会覆盖前面注册的事件(同一个事件)

        可以通过第三个参数去确定是在冒泡或者捕获阶段执行

        必须使用removeEventListener(事件类型, 事件处理函数, 获取捕获或者冒泡阶段)

        匿名函数无法被解绑

三、事件对象

3.1 获取事件对象

事件对象:

        是个对象,存储了关于事件触发时的相关信息

使用场景:

        判断用户按下了哪个键;

        判断鼠标点击了哪个元素等。

获取:

        事件绑定的回调函数的第一个参数就是事件对象,一般命名为e,ev,event

<body>
<input type="text">
<script>
  const input = document.querySelector('input')
  //按下回车键之后 打印
  input.addEventListener('keyup',function (e) {
    if(e.key === 'Enter'){
      console.log('我按下了回车键')
    }
  })
</script>
</body>

3.2 事件对象常用属性

常用属性

        type 获取当前的事件类型

        clientX/clientY 获取光标相对于浏览器可视窗口左上角的位置

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

        key 用户按下的键盘键的值,代替了keyCode

        target:指代触发事件的对象

        pageX/pageY: 获取光标相对于浏览器整个HTML页面左上角的位置

例:判断按下的键是否是Enter

<body>
<input type="text">
<script>
  const input = document.querySelector('input')
  //按下回车键之后 打印
  input.addEventListener('keyup',function (e) {
    if(e.key === 'Enter'){
      console.log('我按下了回车键')
    }
  })
</script>
</body>

四、环境对象

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

注:

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

        粗略的辨认就是 谁调用,this就是谁

        直接调用函数就相当于是window函数,这里this指代window

例:

<body>
<button>按钮</button>
<script>
  //环境对象this
  //在一般函数中 非严格模式下,this指向的Window,调用者
  const btn = document.querySelector('button')
  function surrounding(){
    console.log(this)//Window
  }
  surrounding()  //   window.surrounding()
  //在其他函数中,this指向调用者
  btn.addEventListener('click',function (){
    console.log(this)//<button>按钮</button>
    //用法
   // btn.style.color = 'red'
    //可以换成
    this.style.color = 'red'
  })
  //所以粗略情况下,this指向调用者
</script>
</body>

五、回调函数

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

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

举例子,定时器,事件绑定里面的执行函数都是回调函数

注:

        使用匿名函数作为回调函数比较常见

        回调函数本质还是函数,只不过,把他当作参数使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值