首页 > 编程语言 >JavaScript语法进阶:事件监听与处理

JavaScript语法进阶:事件监听与处理

时间:2024-11-10 22:47:42浏览次数:6  
标签:event 触发 鼠标 JavaScript 表单 事件 document 监听 进阶

一、概述

事件定义了用户与网页交互时产生的各种操作。例如,单击按钮时,就产生一个事件,告诉浏览器发生了需要进行处理的单击操作。为了使对象能够对某一事件做出响应,就必须编写事件处理函数。

事件处理函数是一段独立的程序代码,它在对象检测到某个特定事件时执行(响应该事件)。一个对象可以响应一个或多个事件,因此可以使用一个和多个事件过程对用户或系统的事件做出响应。

二、常用事件

(一)鼠标事件

是用户在网页上使用鼠标时触发的事件。

首先先用一个div盒子展示鼠标事件举例,代码如下:

<head>
    <style>
        .box{
            width:  60px;
            height: 30px;
            background-color: aliceblue;
            border: 2px solid black;
            text-align: center;
        }
 
        body {  
            height: 3000px; /* 增加浏览器页面高度以便滚动 */  
        }
    </style>
</head>
<body>
 
    <div class="box" id="b1">
        事件
    </div>

</body>

通过<script>标签设置JS监听鼠标事件。

1.mousedown 事件

按下鼠标左键时触发 

    <script>

        //添加事件监听器
        box = document.getElementById("b1");

        // mousedown:按下鼠标键时触发 
        box.addEventListener( "mousedown",
            function(){
                console.log("鼠标按下事件已触发");
            }
        );

    </script>

运行结果如下:

2.mouseup 事件

抬起鼠标左键时触发

    <script>

        //添加事件监听器
        box = document.getElementById("b1");

        // mouseup:抬起鼠标键时触发
        box.addEventListener( "mouseup",
            function(){
                console.log("鼠标抬起事件已触发");
            }
        );

    </script>

运行结果如下:

3.click 事件

单击鼠标左键时触发(由按下和抬起两个动作构成)

    <script>

        //添加事件监听器
        box = document.getElementById("b1");

        // click:单击鼠标时触发 
        box.addEventListener( "click",
            function(){
                console.log("鼠标单击事件已触发");
            }
        );

    </script>

运行结果如下:

4.dblclick 事件

在同一个元素上双击鼠标左键时触发 (由2个按下和2个抬起动作构成)

    <script>

        //添加事件监听器
        box = document.getElementById("b1");

        // dblclick:在同一个元素上双击鼠标时触发 
        box.addEventListener( "dblclick",
            function(){
                console.log("鼠标双击事件已触发");
            }
        );

    </script>

运行结果如下:

5.mouseenter 事件

鼠标进入一个节点时触发,进入子节点不会触发

    <script>

        //添加事件监听器
        box = document.getElementById("b1");

        // mouseenter:鼠标进入一个节点时触发,进入子节点不会触发这个事件 
        box.addEventListener( "mouseenter",
            function(){
                console.log("鼠标进入节点事件已触发");
            }
        );

    </script>

运行结果如下:

6.mouseleave 事件

鼠标离开一个节点时触发,离开父节点不会触发

    <script>

        //添加事件监听器
        box = document.getElementById("b1");

        // mouseleave:鼠标离开一个节点时触发,离开父节点不会触发这个事件
        box.addEventListener( "mouseleave",
            function(){
                console.log("鼠标离开节点事件已触发");
            }
        );

    </script>

运行结果如下:

7.wheel 事件

在浏览器窗口滚动鼠标滚轮时触发

    <script>

        //添加事件监听器
        box = document.getElementById("b1");

        // wheel:在浏览器窗口滚动鼠标滚轮时触发
        window.addEventListener( "wheel",
            function(){
                console.log("鼠标滚动事件已触发");
            }
        );
    </script>

运行结果如下:(滚动鼠标)

注意: 鼠标事件太多了,先不用全部学习,用到再学其他!!!不用记太多,忘了翻看回去。

(二)键盘事件

当用户在键盘上按键时会触发的事件。

1.keydown 事件

按下键盘时触发。

首先先用一个div盒子展示键盘事件举例,代码如下:

<head>
    <style>
        #output {  
            margin-top: 20px;  
            padding: 10px;  
            border: 1px solid #ccc;  
            width: 300px;  
            height: 100px;  
            overflow-y: scroll;
            
            /* 保持空白符和换行符 */ 
            white-space: pre-wrap; 
        }  
    </style>
</head>
<body>
 
  <div id="output"></div> 

</body> 

1.keydown 事件

按下键盘时触发

    <script>  
        // 获取显示按键信息的元素  
        const outputDiv = document.getElementById('output');  
  
        // 监听整个文档的keydown事件  
        document.addEventListener('keydown',
            function(event) {  

                // 获取按键的代码(包括数字键和特殊键,如箭头键、功能键等)   
                const keyCode = event.key; 
                console.log(`键盘 ${keyCode}  被按下`);
            }
        );  

    </script> 

注意:event.key  拿到键盘的值 

运行结果如下:

当按下键盘上的某个键时,控制台会显示点击的按键

2.keyup 事件

抬起键盘时触发。

    <script>  
        // 获取显示按键信息的元素  
        const outputDiv = document.getElementById('output');  
  
        // 监听整个文档的keyup事件  
        document.addEventListener('keyup',
            function(event) {  

                // 获取按键的代码(包括数字键和特殊键,如箭头键、功能键等)   
                const keyCode = event.key; 
                console.log(`键盘 ${keyCode}  被抬起`);
            }
        );  

    </script> 

运行结果如下:

当按下键盘上的某个键后抬起时,控制台会显示抬起的按键 ,如果长按不放则不会显示

3.将按键信息添加到输出区域  

    <script>  
        // 获取显示按键信息的元素  
        const outputDiv = document.getElementById('output');  
  
        // 监听整个文档的keydown事件  
        document.addEventListener('keydown',
            function(event) {  

                // 获取按键的代码(包括数字键和特殊键,如箭头键、功能键等)   
                const keyCode = event.key; 
                // console.log(`键盘 ${keyCode}  被按下`);
                
                
                // 将按键信息添加到输出区域  
                const message = `键盘 ${keyCode}  被按下`; 
                
                outputDiv.textContent += message + '\n';  
    
                // 自动滚动到输出区域的底部 
                // clientHeight 获取元素高度包括 padding 部分,但是不包括 border/margin 
                // clientWidth 获取元素宽度包括 padding 部分,但是不包括 border/margin 
                // scrollHeight 元素总高度,它包括 padding ,但是不包括 border/margin,  包括溢出的不可见内容
                // scrollWidth 元素总宽度,它包括 padding ,但是不包括 border/margin ,  包括溢出的不可见内容 
                // scrollLeft 元素的水平滚动条向右滚动的像素数量
                // scrollTop 元素的垂直滚动条向下滚动的像素数量
                outputDiv.scrollTop = outputDiv.scrollHeight;  

            }
        );  


    </script>  

运行结果如下:

为了让用户能够及时看到最新的内容,我们可以设置自动滚动到输出区域底部。

  • clientHeight 获取元素高度包括 padding 部分,但是不包括 border/margin
  • clientWidth 获取元素宽度包括 padding 部分,但是不包括 border/margin 
  • scrollHeight 元素总高度,它包括 padding ,但是不包括 border/margin,  包括溢出的不可见内容 
  • scrollWidth 元素总宽度,它包括 padding ,但是不包括 border/margin ,  包括溢出的不可见内容 
  • scrollLeft 元素的水平滚动条向右滚动的像素数量
  • scrollTop 元素的垂直滚动条向下滚动的像素数量

这中方法可以根据具体的使用场景和项目需求选择使用。例如,在聊天窗口或无限滚动加载场景中,自动滚动到底部可以提升用户体验。

(三)表单事件

1.概念

是指那些与表单相关的特定事件,这些事件在用户与表单交互时触发,允许开发者执行特定的操作或响应。

(1)设置一个简单的表单

代码如下:

 
<body>
    <!-- 简单的HTML表单 -->  
    <form id="myForm">  
        姓名: <input type="text" id="name" value="在此处输入你的姓名">  <br>  
        邮箱: <input type="email" id="email" value="在此处输入你的邮箱">  <br>  
        <input type="submit" value="提交">
        <input type="reset" value="重置">
    </form>  
</body>
(2)添加表单提交事件监听器

submit:提交事件

    <script>  
        // 获取表单元素  
        const form = document.getElementById('myForm');  
  
        // 添加“表单提交”事件监听器  
        form.addEventListener('submit', 
            function(event) {  

            // 阻止表单的“默认提交行为”  (即:将数据发送到表单的 action 属性指定的 URL,并在那里进行处理))
            // 然而,在前端开发中,经常会有这样的需求:在表单提交之前进行一些客户端验证
            // 在这些情况下,你需要阻止表单的默认提交行为。
            // 比如: 你可以在提交表单之前检查用户输入的数据是否有效(如检查必填字段是否已填写,
            // 电子邮件地址格式是否正确等)。如果数据无效,你可以显示错误消息而不提交表单

            event.preventDefault();      // 阻止表单的“默认提交行为” 
  
            // 弹出警告框(在实际应用中,你可能会在这里进行AJAX请求或其他处理)  
            alert('表单提交按钮被按下! (但默认提交行为被截止了)');  
  
            // 你可以在这里添加其他代码来处理表单数据  
            // 例如,获取输入值:  
            const name = document.getElementById('name').value;  
            const email = document.getElementById('email').value;  
            console.log('Name:', name);  
            console.log('Email:', email);  
            }
        ); 
        
    </script>  

运行结果如下:

当邮箱格式写错时则会弹出提示  

更正后,点击提交弹出警告框 

(3)添加表单重置事件监听器

reset:重置事件

在原有代码上添加此代码

        // 添加表单重置事件监听器  
        form.addEventListener('reset', 
            function(event) {  
            // 弹出警告框
            alert('表单已经重置! ');  
            }
        );

运行结果如下:

 点击确认后重置表单

(4)获取文本输入框元素

select:选中事件

在原有代码上添加此代码

        // 获取文本输入框元素  
        const inputElement = document.getElementById('name'); 
        // 添加 select 事件监听器  
        inputElement.addEventListener('select', 
            function(event) {  
            // 输出选择的文本范围(起始位置和结束位置) 
            // Event.target属性返回事件当前所在的节点 
            console.log('选中的文本范围:', event.target.selectionStart, event.target.selectionEnd);  
  
            // 你也可以获取并输出实际选中的文本,但需要注意浏览器兼容性  
            // 以下代码在大多数现代浏览器中有效,但在某些旧版浏览器中可能不适用  
            // 注意: selectionEnd 属性返回的是选择范围的结束位置的下一个字符的索引
            const selectedText = inputElement.value.substring(event.target.selectionStart, event.target.selectionEnd);  
            console.log('已选中文本:', selectedText);  
  
            // 对于更简单的用途,你可能只想输出一条消息来表示事件已被触发  
            alert('输入框中的文本被选中了!!!');  
            }
    );

运行结果如下:

标签:event,触发,鼠标,JavaScript,表单,事件,document,监听,进阶
From: https://blog.csdn.net/2401_84309743/article/details/143667286

相关文章

  • JavaScript(JS)函数的使用(二)
    12、函数函数名相同时后面的函数覆盖前面的函数;在JS中实参的个数和形参的个数可以不一致;如果形参过多,会自动填上undefined;如果实参过多,多余的实参会被忽略;函数遇到return就不向下执行,函数的结束用return。1.1函数的声明与调用<script>functionwriteText()......
  • 如果你搞不懂排序,看这篇文章就对了,初学者也看得懂,其三:进阶插入排序——希尔排序
    目录一.希尔排序1.1希尔排序的原理1.2希尔排序的代码思路1.3希尔排序的代码实现1.1希尔排序的原理希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重......
  • JavaScript设计模式-工厂方法模式
    工厂方法模式又称为工厂模式,也叫虚拟构造器模式或者多态工厂模式,属于类创建型模式。在工厂方法模式中,工厂父类定义了创建产品对象的公共接口,而具体的工厂子类则负责生成不同的产品对象。这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,由工厂子类决定创建哪种具体......
  • 白骑士的JavaScript教学高级篇之错误处理与调试 4.4.1 错误的类型与处理(try, catch, t
            在JavaScript开发中,错误处理与调试是编写健壮代码的重要组成部分。了解如何有效地捕获和处理错误可以提高应用的稳定性和用户体验。JavaScript提供了几种机制来处理错误,包括‘try‘,‘catch‘,‘throw‘,和‘finally‘。下面将详细介绍这些机制以及它们的......
  • ArkTS的进阶语法-1(泛型,工具类型,空安全)
     目录ArkTS的进阶语法1.泛型......
  • JVM 进阶:深入理解与高级调优
    在学习了JVM的基础知识后,接下来我们将深入了解JVM的内部工作原理、高级优化方法和性能调优技巧,这些内容将帮助你更好地管理Java应用的性能,尤其是在面对大规模应用和高并发场景时。一、深入了解JVM内存结构JVM内存结构的划分和管理直接关系到Java程序的运行效率,深......
  • 【模块一】kubernetes容器编排进阶实战之kubeadm部署kubernetes
    kubeadm部署kubernetes准备环境主机名IP地址k8s-master1        10.0.0.121k8s-node110.0.0.101k8s-node210.0.0.102k8s-node310.0.0.103注:提前安装好docker或者containerd环境安装kubeadm、kubectl、kubelet#分别在所有主机依次执行一下命令apt-getupdate&&......
  • 学生HTML个人网页作业作品 使用HTML+CSS+JavaScript个人介绍博客网站 web前端课程设计
    ......
  • WPF 集合操作进阶:提取特定字段、转换 ObservableCollection 和过滤数据
    文章目录1.引言2.从List<T>提取特定字段3.将List<T>转换为observableCollection<T>4.过滤List<T>集合5.总结6.完整示例代码1.引言在C#开发中,集合操作是非常常见的任务,特别是在数据处理和用户界面设计中。本文将介绍如何从List<T>中提取......
  • 【黑马python:函数进阶】81-84
    目录一、函数的多个返回值二、函数的多种传参方式1.函数参数种类1.1位置参数与关键字参数1.2缺省参数1.3不定长参数三、函数作为参数传递四、匿名函数一、函数的多个返回值如果一个函数要有多个返回值,该如何书写代码?按照返回值的顺序,写对应顺序的多个变量接......