首页 > 编程语言 >【Java 进阶篇】JavaScript 事件详解

【Java 进阶篇】JavaScript 事件详解

时间:2023-10-24 19:05:46浏览次数:37  
标签:触发 元素 Java 鼠标 JavaScript 进阶篇 点击 事件


【Java 进阶篇】JavaScript 事件详解_javascript

在本篇博客中,我们将深入探讨JavaScript事件,这是网页交互的核心。我们将从什么是事件开始,然后逐步介绍事件的类型、如何注册事件、事件处理程序、事件对象以及事件冒泡等相关内容。最终,我们将提供大量的示例代码来帮助您更好地理解JavaScript事件。

什么是事件?

在Web开发中,事件是用户或浏览器发生的事情。这些事件可以是用户与页面互动,例如点击按钮、输入文本或鼠标移动,也可以是页面本身发生的事情,如文档加载完成或定时器触发。

JavaScript允许我们捕获、处理和响应这些事件,使得我们可以创建动态和交互性的网页。

事件的类型

JavaScript支持多种不同类型的事件,包括但不限于:

1. 鼠标事件

  • click:鼠标点击事件。
  • mouseover:鼠标移动到元素上时触发。
  • mouseout:鼠标从元素上移开时触发。
  • mousedown:鼠标按钮被按下时触发。
  • mouseup:鼠标按钮被释放时触发。

2. 键盘事件

  • keydown:键盘上的键被按下时触发。
  • keyup:键盘上的键被释放时触发。

3. 表单事件

  • submit:表单提交时触发。
  • change:表单元素的值发生改变时触发。
  • input:输入框的内容发生变化时触发。

4. 网页加载事件

  • load:整个页面及外部资源加载完成时触发。
  • DOMContentLoaded:DOM结构加载完成时触发,不必等待图片等外部资源加载完毕。

5. 自定义事件

您还可以创建自定义事件,以满足特定需求。

如何注册事件

要在HTML元素上注册事件,您可以使用HTML属性或JavaScript代码。以下是两种主要方法:

1. HTML属性

可以使用以下HTML属性将事件处理程序附加到HTML元素:

<button onclick="myFunction()">点击我</button>

这里onclick是一个事件属性,它告诉浏览器在按钮被点击时执行myFunction函数。

2. JavaScript代码

使用JavaScript,您可以使用addEventListener方法注册事件处理程序:

const button = document.getElementById('myButton');
button.addEventListener('click', myFunction);

这样的方式更具灵活性,可以在JavaScript中动态创建、移除和控制事件。

事件处理程序

事件处理程序是JavaScript函数,它定义了事件触发时要执行的操作。事件处理程序通常带有一个事件对象参数,以便访问事件的相关信息。

function myFunction(event) {
  alert('按钮被点击了!');
}

事件对象

事件处理程序的参数通常是事件对象,它包含有关事件的详细信息,例如事件类型、目标元素、鼠标坐标等。

function myFunction(event) {
  console.log('事件类型:' + event.type);
  console.log('目标元素:' + event.target);
  console.log('鼠标X坐标:' + event.clientX);
  console.log('鼠标Y坐标:' + event.clientY);
}

事件对象的属性和方法因事件类型而异,可以根据需要使用。

事件冒泡

事件冒泡是指事件从目标元素冒泡到文档树根元素的过程。这意味着事件会先在最深的嵌套元素上触发,然后逐级向上传播,直到文档树的根元素。

<div id="parent">
  <button id="child">点击我</button>
</div>
const parent = document.getElementById('parent');
const child = document.getElementById('child');

parent.addEventListener('click', function() {
  console.log('父元素被点击');
});

child.addEventListener('click', function() {
  console.log('子元素被点击');
});

在这个示例中,当点击按钮时,事件会首先在子元素上触发,然后冒泡到父元素。因此,控制台将输出以下内容:

子元素被点击
父元素被点击

您可以使用stopPropagation方法来阻止事件继续冒泡:

child.addEventListener('click', function(event) {
  console.log('子元素被点击');
  event.stopPropagation(); // 阻止事件冒泡
});

在这种情况下,只有子元素上的事件处理程序会运行,父元素上的不会执行。

示例代码

让我们通过一些示例代码来演示JavaScript事件的使用。

示例 1:点击按钮改变文本

<!DOCTYPE html>
<html>
<head>
  <title>点击按钮改变文本</title>
</head>
<body>
  <button id="myButton">点击我</button>
  <p id="myText">我会在按钮点击后改变</p>
  <script>
    const button = document.getElementById('myButton');
    const text = document.getElementById('myText');
    
    button.addEventListener('click', function() {
      text.textContent = '按钮被点击了!';
    });
  </script>
</body>
</html>

示例 2:鼠标悬停显示提示

<!DOCTYPE html>
<html>
<head>
  <title>鼠标悬停显示提示</title>
  <style>
    .tooltip {
      position: relative;
      display: inline-block;
      cursor: pointer;
    }
    .tooltiptext {
      visibility: hidden;
      width: 120px;
      background-color: #333;
      color: #fff;
      text-align: center;
      border-radius: 6px;
      padding: 5px;
      position: absolute;
      z-index: 1;
      bottom: 125%;
      left: 50%;
      margin-left: -60px;
      opacity: 0;
      transition: opacity 0.3s;
    }
    .tooltip:hover .tooltiptext {
      visibility: visible;
      opacity: 1;
    }
  </style>
</head>
<body>
  <div class="tooltip">
    鼠标悬停我
    <span class="tooltiptext">这是一个提示</span>
  </div>
</body>
</html>

这两个示例展示了事件处理程序的实际应用,以及如何与CSS样式和HTML元素互动,创造出各种交互效果。

结语

JavaScript事件是Web开发中不可或缺的一部分,使得网页变得更加生动和交互。在本博客中,我们深入探讨了事件的类型、注册事件的方法、事件处理程序、事件对象以及事件冒泡。通过不断练习和实验,您将能够掌握JavaScript事件,创造出更具交互性的网页。祝您编写愉快!

如果您对特定主题有更多的疑问或需要更多的示例代码,请随时向我们提问。我们很乐意为您提供帮助。

作者信息


作者 : 繁依Fanyi


标签:触发,元素,Java,鼠标,JavaScript,进阶篇,点击,事件
From: https://blog.51cto.com/techfanyi/8009052

相关文章

  • java的位运算
    背景最近公司有来面试的,和他们沟通过后,看到公司的面试题上有这么一个题5|2的结果是什么。然后被他们问到,我只知道是一个位运算题,具体的答案还真的不知道,作为技术人,求知的精神定然不能缺少;今天就来查缺补漏,对位运算进行一个回顾。什么是位运算位运算是对整数在内存中的二进制进行操......
  • Java基础 缓冲流
    缓冲流是高级流,它对基本流做了一个包装,所以在底层,真正读写数据的还是InputStream和OutputStream这两个基本流,只不过有了缓冲流的加持,读写的效率更高而已  ......
  • docker-compose 外部配置部署 java 项目原创
    有的项目写完,需要打包到不同的环境。所以配置一个外部yml配置文件会方便很多,不用重新打包。文件目录构造├──app├──application.yml├──app.jar├──Dockerfile├──mysql├──nginxdocker-compose.ymlw.sh复制DockerfileFROMjava:8#VO......
  • java.lang.OutOfMemoryError: Java heap space 一次堆内存溢出异常处理
    问题:在获取人员信息同步到系统中时出现了错误 Javaheapspace,解决:堆内存溢出,在网上查询了诸多资料,解决办法都是增加JVM的内存:JAVA_OPTS="-server-Xms2048m-Xmx2048m-XX:PermSize=256M-XX:MaxNewSize=512m-XX:MaxPermSize=512m" ,尝试增加内存后还是失败     ......
  • Java替换RequestBody和RequestParam参数的属性
    Java替换RequstBody和RequestParam参数的属性本文主要讲解在Java环境中如何替换RequestBody和RequestParam参数中的属性背景近期由于接手的老项目中存在所有接口中新增一个加密串来给接口做一个加密效果(项目历史原因,不方便上Jwt授权这套),所以就研究了一下Http请求链路,发现可......
  • 关于Windows打印机驱动相关问题-如何利用Java(或其他)调用打印机驱动程序完成原始文件翻
    前面这些都是问题描述,问题在偏下面场景:用户电脑上安装了PCL驱动,可通过驱动完成打印。需求:现在需要提供一种脱离PC端完成文件上传并打印的功能。让用户使用手机或pc未安装驱动时都能打印文件。目前思路:首先上传文件这一步没有任何问题,开发了相应的H5界面,通过浏览器进行原始文件......
  • 如何用Java找出两个List中的重复元素,读这一篇就够了
     在Java编程中,我们经常需要找出两个列表(List)中的重复元素。在本文中,我们将探讨三种方法来实现这一目标。 方法一:使用HashSetJava中的HashSet是一个不允许有重复元素的集合。我们可以利用这个特性,通过合并两个List并计算差集,来找出重复的元素。以下是一个通过使用HashSet数......
  • [VM] The JavaScript Virtual Machine
    TableofContentIntroudctiontoVMsCPU-UnderstandingthePysicalMachineVMs-Arrays,Objects,functions,prototypechainsDepotExplorer:collectingdatafromtheVMDeopt:CallingCoventions&InliningMegamohpism&InlineCache:Objectpro......
  • Java ConcurrentModificationException异常原因和解决方法
    JavaConcurrentModificationException异常原因和解决方法JavaConcurrentModificationException异常原因和解决方法在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以......
  • java动态创建es 及mapping
    publicCreateIndexResponsecreateIndexWithMapping(Stringindex,Map<String,String>mapping){CreateIndexResponseresponse=null;try{CreateIndexRequestrequest=newCreateIndexRequest(index);request.settings(Settings.b......