2、鼠标事件、键盘事件、浏览器事件、监听事件、冒泡事件、默认事件、属性操作

news2024/11/17 8:15:35

一、鼠标事件

1、单击事件:onclick

<body>
    <header id="head">我是头部标签</header>
</body>
<script>
var head = document.getElementById("head")
    head.onclick = function () {
        console.log("我是鼠标单击事件");
    }
</script>

==注意:==for循环里面的点击事件 不能用i,要用this,因为是异步的

image-20240126170010686

2、双击事件:ondblclick

3、鼠标移入事件:onmouseover

4、鼠标移出事件:onmouseout

5、鼠标进入事件:onmouseenter

6、鼠标离开事件:onmouseleave

7、鼠标移动事件:onmousemove

8、鼠标抬起事件:onmouseup

9、鼠标放下事件:onmousedown

10、鼠标获取焦点:onfocus

获取里面的值:value

<body>
    <input type="text">
</body>
<script>
var text = document.getElementsByTagName("input")[0]
    text.onfocus = function () {
        console.log("鼠标获取焦点了");
    }
</script>

11、鼠标失去焦点:onblur

案例:失去焦点后获取输入框的值 value

image-20240126194326071

二、键盘事件

1、键盘按下事件:onkeydown

<body>
    <input type="text">
</body>
<script>
var text = document.getElementsByTagName("input")[0]
    // 1、按键按下事件onkeydown
    text.onkeydown = function () {
        console.log("键盘按下了");
    }
    // 2、按键抬起事件onkeyup
    text.onkeyup = function () {
        //注意有连接符的要去掉,后面字母要大写
        this.style.backgroundColor = "red"
    }
</script>

2、键盘抬起事件:onkeyup

三、浏览器事件

浏览器加载完成事件:window.onload

浏览器滚动事件:window.onscroll

<body style="height: 200px;">
    <header id="head">我是头部标签</header>
    <input type="text">
</body>
<script>
    window.onscroll = function () {
      console.log('滚动了')
    }
</script>

四、监听事件

1、普通的绑定事件

  • 事件源.事件类型 = 事件的处理程序

  • 解绑: 事件源.事件类型 = null
    ==注意:==普通的事件不能用remove,绑定的也只能用remove

<head>
	<style>
      .headObj {
        height: 100px;
        background-color: red;
      }
	</style>
</head>
<body>
      <header id="headObj" class="headObj">我是头部区域标签</header>
</body>
<script>
    var headObj = document.getElementById('headObj')
    //绑定:事件源.事件类型 = 事件的处理程序
    headObj.ondblclick = function () {
      this.style.backgroundColor = 'rgb(0,255,0)'
    }
    //解绑:
    headObj.ondblclick = null
</script>

2、绑定监听事件

  • 事件源.addEventListener(事件类型,事件的处理程序)

  • 解绑:事件源.removeEventListener(事件类型,事件处理程序的函数名)
    注意:这个里面的事件 不加 on

<script>
//绑定:事件源.addEventListener(事件类型,事件的处理程序)
 headObj.addEventListener('mouseover', fn1)
    function fn1() {
      this.style.height = '200px'
    }
    //解绑:
    headObj.removeEventListener('mouseover', fn1)
</script>

3、事件对象

任何一个事件都有一个内置对象event

image-20240126184344683

  • event输出结果
    image-20240126184304754

获取事件对象的方式

  • 浏览器兼容性的事件对象手法
    var event = event || window.event

  • 在事件中处理程序中的参数 e (就是event)

console.log(e);

image-20240126184627082

事件对象中的常见属性

  • target:存储了事件源的特性
    image-20240126184848987

  • clientX与pageX的区别:

    • 相同点:
      clientXpageX都是事件的触发点距离左侧浏览器的横坐标

    • 不同点:
      clientX不包含滚动条卷去的距离
      pageX包含滚动条卷去的距离

image-20240126185100378

  • 事件的类型:console.log(e.type)

    image-20240126185151603

  • key:键名

  • keyCode:键码

image-20240126162602970

敲回车登录

image-20240126162550143

4、冒泡事件

阻止冒泡事件(重点)

  • a、event.stopPropagation() 只输出子元素的事件

    image-20240126190118822

  • b.解绑父元素事件

image-20240126162844878

onmouseover/onmouseout支持冒泡的,

image-20240126163532556

image-20240126163054789

onmouseenter/onmouseleave不支持冒泡

image-20240126163109741

5、默认事件

1、a链接

2、form表单提交

image-20240126164738318

<body>
    <!-- 默认事件:a链接  form表单提交-->
    <a href="https://www.baidu.com" id="link">百度一下</a>
    <form action="https://www.qq.com" method="get">
      <input type="submit" onclick="submitEvent();" />
    </form>
</body>
<script>
    document.getElementById('link').onclick = function () {
      alert('单击事件执行了!')
      // 阻止默认事件
      var event = event || window.event
      event.preventDefault()
    }
    function submitEvent() {
      alert('单击表单执行了')
      // 阻止默认事件
      var event = event || window.event
      event.preventDefault()
    }
</script>

五、属性操作

getAttribute(“属性名”) 获取元素指定的属性值

setAttribute(“属性名”,“属性值”) 设置元素的属性名和属性值

getAttribute(“属性名”) 删除元素指定的属性名

<head>
    <style>
      .secClass {
        height: 100px;
        background-color: red;
      }
    </style>
</head>
<body>
    <section id="secId" class="secClass" name_1="fristName">区间</section>
    <button id="set">设置属性</button>
    <button id="remove">删除属性</button>
</body>
<script>
    var secObj = document.getElementById('secId')
    /* 
      getAttribute("属性名") 获取元素指定的属性值
    */
    console.log(secObj.getAttribute('id'))
    console.log(secObj.getAttribute('class'))
    console.log(secObj.getAttribute('name_1'))
    /* 
      setAttribute("属性名","属性值") 设置元素的属性名和属性值
    */
    document.getElementById('set').onclick = function () {
      secObj.setAttribute('id', 'objId')
      secObj.setAttribute('name_1', 'lastName')
      secObj.setAttribute('age_1', '12')
    }
    
    /* 
      getAttribute("属性名") 删除元素指定的属性名
    */
    document.querySelector('#remove').addEventListener('click', function () {
      secObj.removeAttribute('class')
      secObj.removeAttribute('name_1')
    })
</script>

image-20240126165213667

  • 设置属性
    setAttribute(“属性名”,“属性值”) 设置元素的属性名和属性值

image-20240126165340091

  • 删除属性
    getAttribute(“属性名”) 删除元素指定的属性名

image-20240126165555013

image-20240126165431459

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1414005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch使用经验和云上竞品对比

Elasticsearch使用经验和云上竞品对比 - 知乎 过去三十年&#xff0c;我们从企业应用开始&#xff0c;经历了 PC 互联网、移动互联网的爆发式发展&#xff0c;到如今的产业互联网。在这些不同时代&#xff0c;一直变化的是应用形态&#xff0c;不变的是核心数据的价值。 对于核…

kafka summary

最近整体梳理之前用到的一些东西&#xff0c;回顾Kafka的时候好多东西都忘记了&#xff0c;把一些自己记的比较模糊并且感觉有用的东西整理一遍并且记忆一遍&#xff0c;仅用于记录以备后续回顾 Kafka的哪些场景中使用了零拷贝 生产者发送消息&#xff1a;在 Kafka 生产者发送…

五、Kotlin 函数进阶

1. 高阶函数 1.1 什么是高阶函数 以下 2 点至少满足其一的函数称为高阶函数&#xff1a; 形参列表中包含函数类型的参数 //参数 paramN 可以是&#xff1a;函数引用、函数类型变量、或 Lambda 表达式。 fun funName(param1: Type1, param2: Type2, ... , paramN: (p1: T1, p2…

7.【SpringBoot3】项目部署、属性配置、多环境开发

1. SpringBoot 项目部署 项目完成后&#xff0c;需要部署到服务器上。 SpringBoot 项目需要经过编译打包生成一个 jar 包&#xff08;借助打包插件 spring-boot-maven-plugin&#xff09;&#xff0c;再将该 jar 包发送或拷贝到服务器上&#xff0c;然后就可以通过执行 java …

【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题

记录了使用AndroidStudio2022.3 Giraffe版本在搭建环境时遇到的问题&#xff0c;包括连接超时&#xff0c;gradle无法读取等。 如果只看如何正确的配置&#xff0c;直接跳转第3节 配置汇总 1 连接超时 项目一开始会自动下载gardle文件来加载项目 1.1 Connect timed out 基…

【NodeJS JS】动态加载字体的各方式及注意事项;

首先加载字体这个需求基本只存在于非系统字体&#xff0c;系统已有字体不需要加载即可直接使用&#xff1b; 方案1&#xff1a;创建 style 标签&#xff0c;写入 font-face{font-family: xxx;src: url(xxx)} 等相关字体样式&#xff1b;将style标签添加到body里&#xff1b;方…

网站将http升级到https大概要多少费用

随着网络安全意识的不断提升&#xff0c;越来越多的网站正从传统的HTTP协议转向更安全的HTTPS协议。这一转变的核心在于部署SSL&#xff08;Secure Sockets Layer&#xff09;或TLS&#xff08;Transport Layer Security&#xff09;证书&#xff0c;以实现数据加密传输&#x…

数据结构(顺序表)

文章目录 一、线性表1、线性表1.1、线性表的定义1.2、线性表的操作 2、顺序表2.1、顺序表的实现--静态分配2.2、顺序表的实现--动态分配2.2、顺序表的特点 3、顺序表的基本操作3.1、插入操作3.2、删除操作3.3、查找操作3.2、按位查找3.2、按值查找 一、线性表 1、线性表 1.1、…

自动驾驶的决策层逻辑

作者 / 阿宝 编辑 / 阿宝 出品 / 阿宝1990 自动驾驶意味着决策责任方的转移 我国2020至2025年将会是向高级自动驾驶跨越的关键5年。自动驾驶等级提高意味着对驾驶员参与度的需求降低&#xff0c;以L3级别为界&#xff0c;低级别自动驾驶环境监测主体和决策责任方仍保留于驾驶…

大数据数据流分析和处理的工具pig,从入门到精通!

介绍&#xff1a;Pig是一种数据流语言和运行环境&#xff0c;用于处理和分析大数据。 Pig由两个主要部分构成&#xff1a; Pig Latin语言&#xff1a;这是一种用于描述数据流的高级语言&#xff0c;它允许用户以较为简洁的方式编写数据处理和转换任务。 Pig执行环境&#xff1a…

JVM工作原理与实战(二十八):内存溢出和内存泄漏

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、内存溢出与内存泄漏 1.内存溢出与内存泄漏介绍 2.内存泄漏的常见场景 3.解决内存溢出的步骤 总结 前言 JVM作为Java程序的运行环境&#xff0c;其负责解释和执行字节码&#x…

<蓝桥杯软件赛>零基础备赛20周--第18周--动态规划初步

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周。 在QQ群上交流答疑&am…

Mediasoup Demo-v3笔记(七)——Mediasoup 下的业务操作

Mediasoup 主业务的创建流程 Mediasoup 权限验证的创建 在实际的代码中&#xff0c;在main.cpp 中调用mediasoup_worker_run函数 在mediasoup_worker_run函数实现中进行了各个模块的初始化 Mediasoup 数据流转 创建连接的过程 数据传输过程 WebRTC大规模部署方案 方案一…

2.5W+ Star的人工智能(AI)项目,微软官方出品,助你快速入门!

目录 [>> 微软推出的人工智能&#xff08;AI&#xff09;入门课程&#xff1a;microsoft/AI-For-Beginners](https://gitcode.com/microsoft/AI-For-Beginners)[>> AI学习项目汇总&#xff1a;tangyudi/Ai-Learn](https://gitcode.com/tangyudi/Ai-Learn)[>>…

pdf.js 实现pdf在线搜索,分页,下载,放大,打印功能

下载插件地址&#xff1a; https://download.csdn.net/download/xiaogg3678/88780912 浏览器在线预览地址&#xff1a; http://localhost/pdfjs-viewer/web/viewer.html?filehttp://localhost/pdfjs-viewer/web/compressed.tracemonkey-pldi-09.pdf

JVM篇:垃圾回收

如何判断对象可以被回收 Java中对象能否被回收&#xff0c;是根据兑现是否被引用来决定的。如果对象被引用了&#xff0c;说明该对象还在使用&#xff0c;不允许被回收 main栈帧中demo变量存储着Demo实例对象的地址&#xff0c;与Demo实例对象建立了连接关系此时Demo实例对象可…

windows系统中如何安装tomcat

在 Windows 系统中安装 Tomcat 通常涉及以下步骤: 1.下载 Tomcat: 访问 Apache Tomcat 官方网站。在 "Download" 部分找到适用于 Windows 的最新版本的 Tomcat。下载 Core 二进制分发版(通常是.zip文件)。 2.解压 Tomcat 压缩包: 将下载的.zip文件解压到…

如何在前端项目里接入Sentry监控系统并通过企业微信通知

能不能让用户录个屏过来呀&#xff1f; 用户使用的是什么机型的手机&#xff1f; 用户使用的什么浏览器呀&#xff1f; 用户的网络是什么情况&#xff1f; … … 线上出现问题时&#xff0c;技术部和业务部同学之间的对话诸如此类…业务同学也很栓Q呀&#xff0c;硬着头皮去问客…

Java Swing桌面项目打包成可执行jar

前言 最近有需求&#xff0c;将Swing项目打包为一个可执行的jar包&#xff0c;遇见了一些问题&#xff0c;参考AI助手&#xff0c;解决了遇到的问题&#xff0c;也有一些亲身实践体会&#xff0c;记录一下。开发环境IntelliJ IDEA&#xff0c;JDK8&#xff0c;用kotlin语言实现…

257:vue+openlayers 实现动态点点网格

第257个 点击查看专栏目录 本示例介绍演示如何在vue+openlayers中实现动态网格,这里通过第三方插件ol-grid来实现。具体的请参考示例源代码和API 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果图配置方式示例源代码(80行)相关API参考…