JS笔记 事件

本文围绕JavaScript事件处理展开,介绍了注册与删除事件监听器的方法,阐述了事件执行的捕获和冒泡阶段,分析了target和this的区别,还讲解了阻止默认和冒泡、事件委托等技巧,同时列举了鼠标、键盘及其他事件的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

一.注册事件监听器

使用 元素.addEventListener(“事件如click”,function(){ 事件内容 })

<button>按钮</button>

<script>
     var btn = document.querySelector("button");
     btn.addEventListener("click",function(){
         alert("sb");
     })
</script>

注:1. 可添加多个事件
2. 第二个参数是函数名,传入时不需要小括号

二.删除事件

  1. 使用元素.onclick = null
<button>按钮</button>

    <script>
        var btn = document.querySelector("button");
        btn.onclick = function() {
            alert("sb");

            btn.onclick = null;
        }
    </script>

注:这个方法时只能用于当前老的添加事件方法

  1. 使用removeEventListener(“事件”,监听函数),这个监听函数最好 不要用匿名函数的方法写(就是上面的)
<button>按钮</button>

    <script>
        var btn = document.querySelector("button");
        
        btn.addEventListener("click",tanchu);

        function tanchu() {
            alert("sb");
            btn.removeEventListener("click", tanchu);
        }

       
    </script>

三.事件执行过程

  1. 使用新的注册监听事件函数时,第三个参数如果填true,就是捕获阶段,从父亲到孩子,也就是先执行父亲的监听函数,再执行孩子的监听函数
  2. 如果使用false(默认),就是冒泡阶段,从孩子到父亲

四.target和this的区别

target指的时触发事件的对象
this指的时绑定时间的对象

比如我们给ul绑定事件,但是点击li触发事件
那么target指的时lithis指的是ul

五.阻止默认和冒泡

在函数function()的参数表中传入e,在函数中使用e.preventDefault()
在这里插入图片描述

冒泡同理,如果在孩子的事件函数中使用,则是在执行完孩子的操作函数后,后面的冒泡不再执行,也就是父亲的函数不再执行
但是点击父亲后,后面的函数任然会继续冒泡

六.事件委托

如果一个父元素有多个子元素,而且子元素们的监听事件相同
我们可以给父元素绑定这个事件,利用子元素冒泡到复原的原理实现一次绑定所有

<ul>
        <li>点我</li>
        <li>点我</li>
        <li>点我</li>
        <li>点我</li>
        <li>点我</li>
    </ul>

    <script>
        var ul = document.querySelector("ul");
        
        ul.addEventListener("click",tanchu);

        function tanchu(e) {
            e.target.style.backgroundColor = 'pink';
        }

       
    </script>

在这里插入图片描述

七.鼠标事件

在这里插入图片描述
注:鼠标离开尽量使用mouseleave

  1. 不允许点击右键弹出菜单,使用‘contextmenu’
    在这里插入图片描述
  2. 阻止鼠标选中,使用‘selectstart’

在这里插入图片描述

  1. mouseovermouseenter的区别
    mouseover经过自己会触发事件,经过子盒子还会触发事件
    mouseenter只有经过自己会触发事件

实例

跟随鼠标

css

img {
    position: absolute;   // 相对于浏览器的位置
}

JS

<img src="images/p.png" alt="">

<script>
    var pic = document.querySelector("img");
    document.addEventListener("mousemove", function(e) {   // 给页面添加事件
        var x = e.pageX;
        var y = e.pageY;

		// 改变与浏览器的相对位置
        pic.style.left = x + 'px';
        pic.style.top = y + 'px';

        console.log(pic.style.left + " " + pic.style.top);

})
     
</script>

八.键盘事件

  1. 普通事件
    在这里插入图片描述
    在这里插入图片描述

  2. 判断按下哪个键盘
    使用e.keyode来确定按下的是哪个键
    在这里插入图片描述
    注:updown不区分大小写
    press区分大小写

九.其他事件

  1. scroll,一滚动就触发的事件
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值