JS的事件介绍

news2024/11/20 8:46:31

JS的事件介绍

JS(JavaScript)是基于对象(Object-based)、事件驱动的脚本语言。

JS事件,就是用户或浏览器本身的某种行为,一般是用户对页面的一些动作引起的,例如,单击某个链接或按钮、在文本框中输入文本、按下键盘上的某个按键、移动鼠标等等。当事件发生时,您可以使用 JavaScript 中的事件处理程序(也可称为事件监听器)来检测并执行某些特定的程序。JS(JavaScript)与HTML 之间的交互是通过事件(event)实现的,或者说,事件是JavaScript和DOM之间进行交互的桥梁。

一般情况下事件的名称都是以单词on开头的,例如点击事件 onclick、页面加载事件 onload 等。

JavaScript常见的事件大体分类及常用事件:

1)鼠标事件

事件         说明

onclick     鼠标单击事件

onmouseover   鼠标移入事件

onmouseout    鼠标移出事件

onmousedown     鼠标按下事件

onmouseup     鼠标松开事件

onmousemove        鼠标移动事件

2)键盘事件

onkeydown       键盘按下

onkeyup         键盘松开

3)表单事件

onfocus         获取焦点时触发

onblur          失去焦点时触发

onselect        选中“单行文本框”或“多行文本框”中的内容时

onselectstart   开始一个新的选择时

onchange        具有多个选项的表单元素选择某一项时触发

4)编辑事件

oncopy          复制(拷贝)时触发

onselect        页面内容被选取时触发

oncontextmenu   按下鼠标右键时触发

5)页面事件

onload           文档加载完成后触发

onbeforeunload    离开页面之前触发

JS的事件的处理及结果同浏览器的环境都有很大的关系,浏览器的版本越新,支持事件就越多,支持的也越完善。

事件调用通常是通过操作HTML属性的方式来实现的,可称为“事件处理器”(event handler)方式,又分为两种:在script标签中调用事件和在元素中调用事件。还有另外一种添加事件的方式,可称为“事件监听器”(event listener)方式,使用addEventListener() 和 removeEventListener()方法。

(1)在script标签中调用事件

这种方式是在JavaScript中设置事件属性。

在script标签中调用事件,指的是在< script >< /script >标签内部调用事件。语法:

obj.事件名 = function()

{

    ……

};

其中,bj是一个DOM对象,所谓的DOM对象,指的是使用getElementById()、getElementsByTagName()等方法获取到的元素节点。

这种事件调用方式就是操作元素的属性。只不过这个属性不是一般的属性,而是“事件属性”。

在script标签中调用事件例子源码:

<!DOCTYPE html> 
<html lang="zh">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" /> 
    <title>在script标签中调用事件</title>
    <script>
        //window.onload可写成onload
        window.onload = function(){
            //获取元素
            var oBtn = document.getElementById("btn");
            //为元素添加点击事件
            oBtn.onclick = function(){
               document.getElementById('field2').value=document.getElementById('field1').value;
            };
        }
    </script>
</head>
<body>
    点击下面的按钮,把文本框1的内容赋给文本框2中:
    <br/>
    文本框1: <input type="text" id="field1" placeholder="输入文本">
    <br/>
    文本框2: <input type="text" id="field2" placeholder="文本">
    <br/>
    <input id="btn" type="button" value="执行" />
</body>
</html>

保存文件名为:在script标签中调用事件例子.html

你可用浏览器运行看看效果:

(2)在元素中调用事件

这种方式是在HTML中设置事件属性。

指的是直接在HTML属性中来调用事件,这个属性又叫做“事件属性”(event attributes)。

在元素中调用事件例子源码

<!DOCTYPE html> 
<html lang="zh">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" /> 
    <title>在元素中调用事件</title>
<script> 
    function fun(){
        document.getElementById('field2').value=document.getElementById('field1').value;
    }
</script>
</head>
<body>
    点击下面的按钮,把文本框1的内容赋给文本框2中:
    <br/>
    文本框1: <input type="text" id="field1" placeholder="输入文本">
    <br/>
    文本框2: <input type="text" id="field2" placeholder="文本">
    <br/>
    <input id="btn" type="button" value="执行" onClick=fun() />
</body>
</html>

保存文件名为:在元素中调用事件例子.html

你可用浏览器运行看看效果:

在实际开发中,有人建议使用在script标签中调用事件,因为这种方式可以使得结构(HTML)与行为(JavaScript)分离。

(3) 使用addEventListener() 和 removeEventListener()方法

上面介绍的事件调用是通过操作HTML属性的方式来实现的,称为“事件处理器”方式。还有另外一种添加事件的方式,称为“事件监听器”方式。所谓的“事件监听器”,指的是使用addEventListener()方法来为一个元素添加事件,我们又称之为“绑定事件”。

使用addEventListener()方法来为一个元素添加事件
addEventListener()方法语法:
obj.addEventListener(type,listener [,useCapture])
其中:
obj是一个DOM对象,指的是使用getElementById()、getElementsByTagName()等方法获取到的元素节点。
type是一个字符串,指的是事件类型。不需要使用 "on" 前缀。 例如,使用 "click" ,而不是使用 "onclick"。
listener  EventListener 接口的对象,或者是一个函数——指定要事件触发时执行的函数。
useCapture 可选, 一个布尔值,可取值:
  true - 事件句柄在捕获阶段执行
  false- 默认。事件句柄在冒泡阶段执行

removeEventListener() 方法语法:
obj.removeEventListener(type, listener, useCapture);
其中,参数可参见addEventListener()方法的。
 

下面给出例子源码:

<!DOCTYPE html> 
<html lang="zh">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" /> 
    <title>使用addEventListener()方法的事件</title>
    <script>
        //window.onload可写成onload
        window.onload = function(){
            //获取元素
            var oBtn = document.getElementById("btn");
            //为元素添加addEventListener()方法
            oBtn.addEventListener("click", fun, false);

            //定义函数
            function fun(){
               document.getElementById('field2').value=document.getElementById('field1').value;
            };
        }
    </script>
</head>
<body>
    点击下面的按钮,把文本框1的内容赋给文本框2中:
    <br/>
    文本框1: <input type="text" id="field1" placeholder="输入文本">
    <br/>
    文本框2: <input type="text" id="field2" placeholder="文本">
    <br/>
    <input id="btn" type="button" value="执行" />
</body>
</html>

保存文件名为:用addEventListener()方法事件例子.html

你可用浏览器运行看看效果:

removeEventListener() 方法可以移除已通过 addEventListener() 方法附加的事件处理程序的作用。

removeEventListener() 方法语法:

obj.removeEventListener(type, listener, useCapture);

其中,参数可参见addEventListener()方法的。

注意removeEventListener()无法移除匿名函数。

removeEventListener()只可以解除“事件监听器”添加的事件,它是不可以解除“事件处理器”添加的事件。如果想要解除“事件处理器”添加的事件,我们可以使用“obj.事件名 = null;”来实现。

下面给出removeEventListener() 方法的例子源码:

<!DOCTYPE html> 
<html lang="zh">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" /> 
    <title>使用removeEventListener()方法</title>
    <script>
        //window.onload可写成onload
        window.onload = function(){
            //获取元素
            var oBtn = document.getElementById("btn");
            var oBtn2 = document.getElementById("btn2");
            //为元素添加addEventListener()方法
            oBtn.addEventListener("click", fun, false);
            oBtn2.addEventListener("click", fun2, false);
            

            //定义函数
            function fun(){
               document.getElementById('field2').value=document.getElementById('field1').value;
            };
            //定义函数
            function fun2(){
               //为元素添加removeEventListener()方法 
               oBtn.removeEventListener("click", fun, false);
            };
        }
    </script>
</head>
<body>
    点击下面的“执行”按钮,把文本框1的内容赋给文本框2中
    <br/>
    点击“解除”按钮后,再点击“执行”按钮,将不再把文本框1的内容赋给文本框2中
    <br/>
    文本框1: <input type="text" id="field1" placeholder="输入文本">
    <br/>
    文本框2: <input type="text" id="field2" placeholder="文本">
    <br/>
    <input id="btn" type="button" value="执行" />
    <input id="btn2" type="button" value="解除" />
</body>
</html>

保存文件名为:用removeEventListener()方法例子.html.html

你可用浏览器运行看看效果:

你可以根据页面上的提示试试

event对象

DOM 中的所有事件对象都基于 Event 对象,并继承其所有属性和方法。

在触发DOM上的某个事件时,会产生一个事件对象event。这个对象中包含着所有与事件有关的信息,包括导致事件的元素,事件的类型以及其他与特定事件相关的信息。

event常用属性和方法

属性

属性         描述        

bubbles    返回布尔值,指示事件是否是起泡事件类型。

cancelable       返回布尔值,指示事件是否可拥可取消的默认动作。

currentTarget 返回其事件监听器触发该事件的元素。

eventPhase     返回事件传播的当前阶段。

target      返回触发此事件的元素(事件的目标节点)。

timeStamp       返回事件生成的日期和时间。

type 返回当前 Event 对象表示的事件的名称。     2

方法

方法         描述        

initEvent()        初始化新创建的 Event 对象的属性。

preventDefault()     通知浏览器不要执行与事件关联的默认动作。

stopPropagation()  不再派发事件。

待续

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

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

相关文章

分享5款实用且免费的软件,让你轻松地完成任务

在日常工作和生活中&#xff0c;使用一些实用的小巧工具软件可以提高效率&#xff0c;让你更轻松地完成任务。 1.图像编辑——Paint.NET Paint.NET是一款免费的图像编辑软件&#xff0c;具有多种高级功能和插件支持。它支持多种文件格式、层、魔术棒、文本、画笔、形状、调整…

【C#+JavaScript+SQL Server】实现Web端在线考试系统 五:考试模块设计(附源码和资源)

需要源码请点赞关注收藏后评论区留言私信~~~ 一、考试模块概述 在线考试系统中的考试模块主要包括阅读考试规则&#xff0c;选择考试科目&#xff0c;随机抽取试题&#xff0c;答题计时器以及自动交卷并评分等功能 在开发考试系统过程中&#xff0c;需要考虑的一点是如何将试…

前端工程化详解——理解与实践前端工程化

前言&#xff1a; 前端工程化一直是一个老生常谈的问题&#xff0c;不管是面试还是我们在公司做基建都会经常提到前端工程化&#xff0c;那么为什么经常会说到前端工程化&#xff0c;并没有听过后端工程化、Java工程化或者Python工程化呢&#xff1f;我们理解的前端工程化是不是…

uniappvideo避坑指南(H5、小程序、app)

今天写下这篇文章已是蓄谋已久了&#xff0c;背景是年初接到项目需求开发基于H5运行的视频学习平台&#xff0c;以及后来uniapp转小程序app开发。相信开发过uniapp的video应该或多或少都遇到过一些坑&#xff0c;开场就不多说了&#xff0c;直接上干货。 项目要求用户不得拖动…

vue3引入router

1.添加vue-router依赖 进入项目路径的cmd下&#xff0c;执行命令 npm install vue-router4 或者yarn add vue-router4 推荐使用yarn命令&#xff0c;比npm安装更快 2.执行npm install重新加载依赖 3.在src文件夹下创建一个router文件夹 4.在router文件夹下创建index.js文件&…

JavaScript核心技术之JSON详解

JSON是什么&#xff1f; JSON&#xff08;JavaScript Object Notation, JS对象简谱&#xff09;是一种轻量级的数据交换格式。它基于 ECMAScript&#xff08;European Computer Manufacturers Association, 欧洲计算机协会制定的js规范&#xff09;的一个子集&#xff0c;采用…

undetected_chromedriver的使用

undetected_chromedriver是专门针对浏览器识别做出来的拓展 直接使用undetected_chromedriver第三方库 if __name__ __main__:from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom sel…

前端数据加密的几种方式

1.base64加密方式 1.1 base64是什么&#xff1f; Base64&#xff0c;顾名思义&#xff0c;就是包括小写字母a-z、大写字母A-Z、数字0-9、符号""、"/"一共64个字符的字符集&#xff0c;&#xff08;另加一个“”&#xff0c;实际是65个字符&#xff0c;至…

Access-Control-Allow-Origin跨域解决及详细介绍

首先&#xff0c;跨域不是问题。是一种安全机制。 这是你在开发时、上线前就必须提前考虑到的安全问题并且采取合适的手段去避免这个问题带来的程序错误。不过通常情况下&#xff0c;前端开发的小伙伴们都非常坚信后端小伙伴的接口一定已经处理好了跨域这个需求。然而事实上许多…

JavaWeb 项目 --- 表白墙 和 在线相册

文章目录一. 案例: 表白墙 (使用模板引擎)1. 首先创建 maven 项目2. 创建好模板文件3. 使用数据库存储数据.创建一个类用于数据库连接4. 使用 监视器 来初始化 Thymeleaf5. 编写 Servlet 代码① 重写 doGet 方法② 重写 doPost 方法③ 实现 load 方法④ 实现 save 方法6. 注意事…

Vue中key的作用及原理

1. 先说结论 key在Vue是DOM对象的标识&#xff1b;进行列表展示时&#xff0c;默认key是index&#xff1b;如果数据只做展示使用&#xff0c;使用index作为key是没有任何问题的&#xff1b;如果使用index作为key&#xff0c;而后续操作会破坏顺序&#xff0c;一定会带来效率问…

vue3 antd table表格样式修改——使用rowClassName更改某行数据的样式

vue3 antd项目实战——修改ant design vue组件中table表格的默认样式&#xff08;二&#xff09;知识调用场景复现修改table表格的行样式一、rowClassName添加行样式二、表格的不可控操作写在最后知识调用 文章中可能会用到的知识链接vue3ant design vuets实战【ant-design-vu…

解决:在 VSCode 中如何设置默认的浏览器为Chrome或Firefox

1、问题描述&#xff1a; 在 VSCode 编辑器中&#xff0c;其一般默认打开的浏览器是 IE 浏览器&#xff0c;而我已经习惯使用 Chrome 浏览器&#xff0c;以及会遇到页面的调试等不同的问题&#xff0c;因此需要将 VSCode 的默认浏览器调整为 Chrome 浏览器&#xff1b; 2、操…

【web前端开发】超详细讲解CSS盒子模型

文章目录1.盒子模型介绍2.内容3.边框4.内边距5.⭐盒子大小计算6.⭐内减模式7.外边距外边距的合并外边距的塌陷行内元素的垂直外边距8.⭐清除默认样式9.⭐版心居中1.盒子模型介绍 所有HTML元素可以看作盒子,CSS盒模型本质上是一个盒子&#xff0c;封装周围的HTML元素&#xff0c…

使用Vue来完成项目中的首页导航+左侧菜单

目录 1. 准备工作 2. 动态树 2.1 在配置请求路径 2.2 使用动态数据构建导航菜单 2.2.1 通过接口获取数据 2.2.3 通过后台获取的数据构建菜单导航 2.3 点击菜单实现路由跳转 2.3.1 创建书本管理组件 2.3.2 配置路由 2.3.3 修改LeftAside组件 2.3.4 修改Main组件 3. …

8个不能错过的程序员必备网站,惊艳到我了!!!

程序员是一个需要不断学习的职业&#xff0c;不少朋友每天来逛CSDN、掘金等网站&#xff0c;但一直都抱着“收藏从未停止&#xff0c;学习从未开始”的态度&#xff0c;别骗自己了兄弟。在编程体系中&#xff0c;有很多不错的小工具&#xff0c;可以极大得提升我们的开发效率。…

前端技术:解决执行npm install提示 xxx packages are looking for funding run `npm fund` for details的问题 详述npm fund

目录复现问题分析问题npm fund的命令npm fund的由来npm fund与npm ls解决问题参看文献&#x1f610; 我的博客&#xff0c;不仅帮你解决此类问题&#xff0c;还会告诉如何去分析定位问题。 复现问题 今天执行如下命令时&#xff1a; npm install报出如下问题&#xff1a; 2…

cookie、localStorage和sessionStorage详解

目录 一、cookie 二、Web storage 1、localStorage 2、sessionStorage的使用 3、复杂数据类型储存 Web Storage带来的好处&#xff1a; 三、sessionStorage、localStorage和cookie的区别 一、cookie cookie是客户端与服务器端进行会话使用的一个能够在浏览器本地化存储…

vue引入elementUi后打开页面报错Uncaught TypeError: Cannot read properties of undefined(reading ‘prototype‘)

vue引入elementUi后打开页面报错 本人在用idea创建vue项目并引入elemenUi之后网页报错&#xff1a; Uncaught TypeError: Cannot read properties of undefined(reading ‘prototype’)。 百度了很多办法都说是因为在vue3中引入了elementUi&#xff0c;vue3.0之后是不支持el…

基于Java+Springmvc+vue+element员工信息管理系统详细设计

博主介绍&#xff1a;✌公司项目主程、全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,CSDN博客之星TOP100、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业设计✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f345;…