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

一、鼠标事件

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.mfbz.cn/a/351502.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单片机设计_智能蓝牙电子秤(51单片机、HX711AD)

想要更多项目私wo!!! 一、电路设计 智能蓝牙电子称由51单片机、HX711AD称重模块、HC-05蓝牙模块、LCD1602等电路组成硬件部分,然后上传至APP。 二、运行结果 三、部分代码 #include "main.h" #include "HX711.h" #include "uart.h" #include …

podman+centos和docker+alpine中作性能对比遇到的问题及解决

1.dockeralpine中遇到这个问题 这是由于缺少相关的配置和依赖造成的 通过以下命令在alpine中安装相关配置 apk add --no-cache build-base cairo-dev cairo cairo-tools jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev 2.alpine中python找…

API网关-Apisix RPM包方式自动化安装配置教程

文章目录 前言一、简介1. etcd简介2. APISIX简介3. apisix-dashboard简介 二、Apisix安装教程1. 复制脚本2. 增加执行权限3. 执行脚本4. 浏览器访问5. 卸载Apisix 三、命令1. Apisix命令1.1 启动apisix服务1.2 停止apisix服务1.3 优雅地停止apisix服务1.4 重启apisix服务1.5 重…

【云原生】认识docker容器操作命令

目录 一、容器操作命令 1、创建容器 2、删除容器以及停止容器运行 3、查看容器的运行状态 4、查看容器的详细信息 5、将容器的文件传输到宿主机以及将宿主机的文件传输到容器中 6、批量删除容器 7、进入容器 二、容器的迁移 1、先在容器中创建测试文件 2、将容器存储…

洛谷 P5635 【CSGRound1】天下第一

原址链接 P5635 【CSGRound1】天下第一 先看标签 搜索&#xff1f;模拟&#xff1f;用不着这么复杂 创建函数a(int x,int y,int p) a(int x,int y,int p){if(x<0){return 1;}x (xy)%p;if(y<0){return 2;}y (xy)%p;return a(x,y,p); }写入主函数 #include<iostrea…

防御保护----防火墙的安全策略、NAT策略实验

实验拓扑&#xff1a; 实验要求&#xff1a; 1.生产区在工作时间&#xff08;9&#xff1a;00-18&#xff1a;00&#xff09;内可以访问DMZ区&#xff0c;仅可以访问http服务器&#xff1b; 2.办公区全天可以访问DMZ区&#xff0c;其中10.0.2.10可以访问FTP服务器和HTTP服务器…

Flink实现数据写入MySQL

先准备一个文件里面数据有&#xff1a; a, 1547718199, 1000000 b, 1547718200, 1000000 c, 1547718201, 1000000 d, 1547718202, 1000000 e, 1547718203, 1000000 f, 1547718204, 1000000 g, 1547718205, 1000000 h, 1547718210, 1000000 i, 1547718210, 1000000 j, 154771821…

Windows Server 安装 Docker

一、简介 Docker 不是一个通用容器工具&#xff0c;它依赖运行的 Linux 内核环境。Docker 实质上是在运行的 Linux 服务器上制造了一个隔离的文件环境&#xff0c;所以它执行的效率几乎等同于所部署的 Linux 主机服务器性能。因此&#xff0c;Docker 必须部署在 Linux 内核系统…

【保驾护航】HarmonyOS应用开发者基础认证-题库

通过系统化的课程学习&#xff0c;熟练掌握DevEco Studio&#xff0c;ArkTS&#xff0c;ArkUI&#xff0c;预览器&#xff0c;模拟器&#xff0c;SDK等HarmonyOS应用开发的关键概念&#xff0c;具备基础的应用开发能力。 考试说明 1、考试需实名认证&#xff0c;请在考前于个…

【LeetCode: 135. 分发糖果 + 贪心】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

嵌入式-stm32-江科大-OLED调试工具

文章目录 一&#xff1a;OLED调试工具1.1 OLED显示屏介绍1.2 实验&#xff1a;在OLED显示屏的使用1.3 自己新增功能测试道友&#xff1a;今天没有开始的事&#xff0c;明天绝不会完成。 一&#xff1a;OLED调试工具 1.1 OLED显示屏介绍 学习任何一门语言就需要进行调试&#…

Java基础进阶03-注解和单元测试

目录 一、注解 1.概述 2.作用 3.自定义注解 &#xff08;1&#xff09;格式 &#xff08;2&#xff09;使用 &#xff08;3&#xff09;练习 4.元注解 &#xff08;1&#xff09;概述 &#xff08;2&#xff09;常见元注解 &#xff08;3&#xff09;Target &#x…

第13次修改了可删除可持久保存的前端html备忘录:删除按钮靠右,做了一个背景主题:现代深色

第13次修改了可删除可持久保存的前端html备忘录&#xff1a;删除按钮靠右&#xff0c;做了一个背景主题&#xff1a;现代深色 备忘录代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"vi…

LFU算法

LFU算法 Least Frequently Used&#xff08;最不频繁使用&#xff09; Leetcode有原题&#xff0c;之前手写过LRU&#xff0c;数据结构还是习惯于用java实现&#xff0c;实现是copy的评论题解。 题解注释写的很清楚 大致就是说LFUCache类维护一个存放node的map&#xff0c;同…

立创EDA学习:设计收尾工作

布线整理 ShiftM&#xff0c;关闭铺铜显示 调整结束后再使用快捷键”ShiftM“打开铺铜 过孔 在空白区域加上一些GND过孔&#xff0c;连接顶层与底层的铺铜。放置好”过孔“后&#xff0c;隐藏铺铜&#xff0c;观察刚才放置的过孔有没有妨碍到其他器件 调整铺铜 先打开铺铜区&…

php mysql字段默认值使用问题

前提是使用了事务&#xff0c;在第一个阶段 是A表操作保存&#xff0c;第二阶段操作B表&#xff0c;操作B表的时候使用了A表的一个字段&#xff0c;这个字段在第一阶段没有设置值&#xff0c;保存的时候使用字段默认值。 【这种情况 最好是在第一阶段 把后面要使用的字段设置好…

C#在图片上输出文字和保存

winform&#xff0c;图片控件&#xff0c;加载一个图片&#xff0c;在图片上输出文字&#xff1b; 输出文字的代码如下&#xff1b; private void pictureBox1_Paint(object sender, PaintEventArgs e){Graphics g1 e.Graphics;g1.DrawString("测试", this.Font, B…

物联网IOT视频设备如何快速对接阿里云生活物联网(Link Visual)并成功上云?

原文永久更新地址&#xff1a;https://www.yundashi168.com/472.html 文章来源&#xff1a;猿视野 如果有图片看不清楚&#xff0c;加载不出来&#xff0c;请阅读原文。 什么是Link Visual、 Link Visual是生活物联网平台针对视频产品推出的增值服务&#xff0c;提供视频数据上…

指针的深入理解1

1.如何理解指针 假设有一栋宿舍楼&#xff0c;把你放在楼里&#xff0c;楼上有100个房间&#xff0c;但是房间没有编号&#xff0c;你的一个朋友来找你玩&#xff0c; 如果想找到你&#xff0c;就得挨个房子去找&#xff0c;这样效率很低&#xff0c;但是我们如果根据楼层和楼…

C#,恩廷格尔组合数(Entringer Number)的算法与源程序

恩廷格尔组合数&#xff08;Entringer Number&#xff09;组合数学的序列数字之一。 E&#xff08;n&#xff0c;k&#xff09;是{1&#xff0c;2&#xff0c;…&#xff0c;n1}的排列数&#xff0c;从k1开始&#xff0c;先下降后上升。 计算结果&#xff1a; 源代码&#xf…
最新文章