Javascript中DOM事件监听 (鼠标事件,键盘事件,表单事件)

[Java] MouseListener、MouseMotionListener 监听器与 MouseEvent 事件 注意: 发生鼠标点击事件时,将会依次触发以下方法: mousePressed(鼠标按下)——>mouseReleased(鼠标松开)->mouseClicked(按下 阅读详情
AI摘要

本文介绍了DOM事件监听机制,它允许JavaScript在HTML文档元素上监听特定事件,使网页能响应用户交互。详细阐述了监听鼠标事件(如mousedown、dblclick等)、键盘事件(keydown、keyup等)以及表单事件(提交、重置等)的相关内容,还给出了部分代码运行情况。

#DOM(Document Object Model)事件监听是一种机制,它允许 JavaScript 代码在 HTML 文档中的元素上监听特定的事件。当这些事件发生时,与之关联的 JavaScript 函数(也称为事件处理函数)就会被执行。这使得网页能够对用户的交互行为做出响应,如点击按钮、按下键盘按键、提交表单等。#

一、监听鼠标事件

1.简介

  • 当按下鼠标按键(左、右键均可)触发事件的发生。
属性关系

mousedown

按下鼠标键时触发

mouseup

抬起鼠标键时触发

click

单击鼠标时触发

dblclick

在同一个元素上双击鼠标时触发

mouseenter

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

mouseleave

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

wheel

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

2、mousedown 事件

  • 这是最常见的鼠标事件之一。当用户在一个元素上按下并释放鼠标左键时触发。
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>鼠标事件</title>
    <style>
        .box{
            width:  60px;
            height: 30px;
            background-color: aliceblue;
            border: 2px solid black;
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="box" id="b1">事件</div>
    <script>
       box = document.getElementById("b1");
        box.addEventListener( "click",
            function(){
                console.log("鼠标单击事件已触发");
            }
        );
    </script>
</body>
</html>

代码运行后如下:                                                                                                                                

 3.mousedown 和 mouseup 事件

  • 当用户在一个元素上抬起和点击时鼠标左键时触发。
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>鼠标事件</title>
    <style>
        .box{
            width:  60px;
            height: 30px;
            background-color: aliceblue;
            border: 2px solid black;
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="box" id="b1">事件</div>
    <script>

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

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

    </script>
</body>
</html>

代码运行后如下:

 4.dblclick 事件

  • 当用户在一个元素上快速连续地两次点击鼠标左键时触发。
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>鼠标事件</title>
    <style>
        .box{
            width:  60px;
            height: 30px;
            background-color: aliceblue;
            border: 2px solid black;
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="box" id="b1">事件</div>
    <script>
        box.addEventListener( "dblclick",
            function(){
                console.log("鼠标双击事件已触发");
            }
        );

    </script>
</body>
</html>

代码运行后如下:

 

5.mouseenter 和 mouseleave 事件 

  • mouseover事件在鼠标指针进入一个元素时触发,mouseout事件在鼠标指针离开一个元素时触发。 

 

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>鼠标事件</title>
    <style>
        .box{
            width:  60px;
            height: 30px;
            background-color: aliceblue;
            border: 2px solid black;
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="box" id="b1">事件</div>
    <script>
        box.addEventListener( "mouseenter",
            function(){
                console.log("鼠标进入节点事件已触发");
            }
        );

        box.addEventListener( "mouseleave",
            function(){
                console.log("鼠标离开节点事件已触发");
            }
        );

    </script>
</body>
</html>

代码运行后如下:

 

6. wheel 事件

  • 在浏览器中滑动触发事件
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>鼠标事件</title>
    <style>
        body {  
         height: 3000px; /* 增加浏览器页面高度以便滚动 */  
        }
    </style>
</head>
<body>
    <script>
       box = document.getElementById("b1");
        // 窗口监听鼠标滚动
        window.addEventListener( "wheel",
            function(){
                console.log("鼠标滚动事件已触发");
            }
        );

    </script>

    </script>
</body>
</html>

代码运行后如下:

 

二、监听键盘事件

1、keydown事件

  • keydown事件在用户按下键盘上的一个键时触发,可以用于实现一些快捷键功能等。例如,在整个文档级别监听键盘事件:
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>键盘事件</title>
    <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>  
  
    <script>  
        // 获取显示按键信息的元素  
        const outputDiv = document.getElementById('output');  
  
        // 监听整个文档的keydown事件  
        document.addEventListener( 'keydown',

            function(event) {  
                console.log(`键盘 ${event.key}  被按下`)
            }
        );  


    </script>  
</body>  
</html>

代码运行后如下:

 

 2、keyup事件

  • keyup事件在用户释放键盘上的一个键时触发。可以用于实现一些快捷键功能等。
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>键盘事件</title>
    <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>  
  
    <script>  
        // 获取显示按键信息的元素  
        const outputDiv = document.getElementById('output');  
  
        // 监听整个文档的keyup事件  
      document.addEventListener( 'keyup',

            function(event) {  
                console.log(`键盘 ${event.key}  被按下`)
            }
        );  


    </script>  
</body>  
</html>

代码运行后如下:

 

3、keycode事件

获取按键的代码(包括数字键和特殊键,如箭头键、功能键等),将按键信息添加到输出区域  。

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>键盘事件</title>
    <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>  
  
    <script>  
        // 获取显示按键信息的元素  
        const outputDiv = document.getElementById('output');  
  
        // 监听整个文档的keyup事件  
        document.addEventListener( 'keydown',

            function(event) {  
                console.log(`键盘 ${event.key}  被抬起`)

                // 获取按键的代码(包括数字键和特殊键,如箭头键、功能键等)   
                const keyCode = event.key; 
                
                // 将按键信息添加到输出区域  
                const message = `键盘 ${keyCode}  被按下`; 
                outputDiv.textContent += message + '\n';  
     


    </script>  
</body>  
</html>

 代码运行后如下:

4、解决自动滚动到输出区域

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

三、监听表单事件

  •  form对象(称表单对象或窗体对象)是document对象的子对象,提供一个让客户端输入文字或选择的功能。通过form对象可以访问表单对象的属性及方法

1、建立一个简单的表单 

<!DOCTYPE html>  
<html lang="zh">  
<head>  
    <meta charset="UTF-8">  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  
    <title>表单事件</title>  
</head>  
<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>  
  
    <script>
    </script>  
</body>  
</html>

2、获取表单元素  

 const form = document.getElementById('myForm');  

3、添加“表单提交”事件监听器

    <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>  
</body>  
</html>
  

代码运行后如下:

4、添加表单重置事件监听器   

        form.addEventListener('reset', 
            function(event) {  
            // 弹出警告框
            alert('表单已经重置! ');  
            }
        );

 代码运行后如下:

5、设置文本范围 

(1)、获取文本输入框元素

const inputElement = document.getElementById('name'); 

(2)、添加 select 事件监听器  

   inputElement.addEventListener('select', 
            function(event) { 
            }
    );

(3)、输出选择的文本范围(起始位置和结束位置)

        inputElement.addEventListener('select', 
            function(event) {  
            // 输出选择的文本范围(起始位置和结束位置) 
            Event.target属性返回事件当前所在的节点 
            console.log('选中的文本范围:', event.target.selectionStart, event.target.selectionEnd);  
  

            }
    );

(4)、获取并输出实际选中的文本

        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);  

            }
    );

(5)、输出一条消息来表示事件已被触发

        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('输入框中的文本被选中了!!!');  
            }
    );

JavaScript事件监听、常见事件及表单验证 JavaScript事件监听及常见事件示例,及简单表单验证示例 阅读详情

相关推荐

HTML 事件

HTML事件是指在用户与网页的交互过程中,浏览器发生的一系列操作。这些操作可以是鼠标点击、键盘输入、页面滚动等。通过处理这些事件,我们可以为网页添加丰富的交互功能。HTML事件是Web开发中不可或缺的概念,它使得网页从静态转变为动态。通过掌握HTML事件的概念、类型、处理方式,我们可以为网页添加丰富的交互功能。在实际开发中,合理运用HTML事件,可以使网页更具活力和实用性。

xyq2024的博客 400

JS中的事件监听

事件监听是Web开发中非常重要的一个概念,掌握了它的用法,可以让我们实现更加丰富和动态的交互效果。在实际开发中,我们需要根据具体的需求选择合适的事件类型和事件处理函数,以及注意事件传播和事件对象的相关问题。

杜永康的博客 1万+

MATLAB实战:手把手教你绘制发动机万有特性曲线(附完整代码)

本文提供了一份详细的MATLAB实战指南,手把手教你从发动机台架试验数据出发,通过数据预处理、核心插值算法和可视化技巧,绘制出专业、精确的发动机万有特性曲线图。文章深入解析了万有特性图的核心构成与工程意义,并附带了完整的模块化代码,帮助工程师和学生快速掌握这一关键技能。

weixin_29094539的博客 410

22 【事件监听】

22 【事件监听】

DSelegent的博客 2324

Fluent新手避坑:遇到‘Floating point exception’别慌,这7个排查步骤帮你搞定

本文为Fluent新手提供了7个排查'Floating point exception'错误的实用步骤,包括边界条件检查、时间步长优化、求解器配置等关键技巧。通过系统化的诊断流程,帮助用户快速定位并解决CFD仿真中的浮点异常问题,提升计算稳定性。

weixin_42531886的博客 285

weblogic等保测评操作过程

weblogic网络安全等级测评保护操作

qq_48257021的博客 2757

JavaScript 鼠标事件监听&&触发时机&&触发顺序

先说下触发时机和作用键(左键、右键)

jinse29的博客 7679

<Verilog实现除法器> Verilog实现牛顿-拉夫逊(Newton-Raphson)除法器

阿斯顿阿斯顿啊啊是打发士大夫

IC跳跳鱼的博客 3586

JS的DOM事件监听 (鼠标事件,键盘事件,表单事件)

/ 阻止表单的“默认提交行为” (即:将数据发送到表单的 action 属性指定的 URL,并在那里进行处理))邮箱: <input type="email" id="email" value="在此处输入你的邮箱"> <br>姓名: <input type="text" id="name" value="在此处输入你的姓名"> <br>// 注意: selectionEnd 属性返回的是选择范围的结束位置的下一个字符的索引。/* 增加浏览器页面高度以便滚动 */

d7210的博客 889

无线通信入门:3种键控法(ASK/FSK/PSK)原理图解与实战对比

本文深入解析无线通信中ASK、FSK、PSK三种基础键控法的原理与应用。通过图解对比,阐明幅移键控(ASK)简单低成本但抗干扰差,频移键控(FSK)稳健且应用广泛,相移键控(PSK)高效但复杂。文章结合实战场景,为物联网和嵌入式开发者在选型时提供关键指导,帮助平衡数据速率、成本、功耗与抗干扰需求。

weixin_29274969的博客 187

LLMOps的崛起:如何利用Langfuse和Opik构建高效的模型监控与评估体系

本文探讨了LLMOps的崛起,详细介绍了如何利用Langfuse和Opik构建高效的模型监控与评估体系。通过开源工具Langfuse的全景监控方案和Opik的三层评估体系,帮助AI工程团队实现大语言模型的全生命周期管理,提升模型性能和迭代效率。文章还提供了实战技巧和工具链集成方案,助力企业优化AI应用。

ll5678的博客 680

JavaScript事件监听

JavaScript事件监听 常用的事件监听 DOM0级事件监听 DOM2级事件监听 onclick addEventListener

CSPsy的博客 3902

从课堂笔记到动手实践:用Multisim仿真高频谐振功放(丙类)的完整流程

本文详细介绍了使用Multisim仿真高频谐振功放(丙类)的完整流程,从仿真环境准备到电路搭建、偏置网络设计、信号注入与波形观测,再到效率优化与性能验证。通过14个关键操作步骤,帮助读者将高频电子线路的理论知识转化为动手实践,深入理解丙类功放的非线性工作状态和效率优化技巧。

weixin_30701575的博客 519

JavaScript常见的对象事件

在Web开发中,DOM(文档对象模型)事件监听是JavaScript与HTML元素进行交互的重要手段。通过监听和处理事件,我们可以响应用户的各种操作,如点击、输入、键盘按键等,从而创建动态和交互式的网页。本文将详细介绍DOM事件监听中的。

2401_82647012的博客 1996

OGRE 3D----2. QGRE + QQuickView

将 OGRE(面向对象图形渲染引擎)集成到使用 QQuickView 的 Qt Quick 应用程序中,可以在现代灵活的 UI 框架中提供强大的 3D 渲染功能。本文将指导您如何在 QQuickView 环境中设置 OGRE。

charce_you的专栏 913

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

2021-08-06 JS,DOM

JS 事件: 当执行某件事情|某个动作触发一段js代码的执行,触发一个函数的执 行,函数js已经定义好了,事件就已经发生了 事件的组成: ​ 事件源: 谁触发的事件 ​ 事件名: 触发了什么事件 ​ 事件监听: 谁管这个事情,谁监视? ​ 事件处理:发⽣了怎么办 分类 ​ 键盘事件 ​ 键盘按下、抬起 ​ 鼠标事件 ​ 单击事件,双击事件、移入、移出 ​ 焦点事件 ​ 聚焦、失焦 ​ 文档事件 ​ window.onload待里面内容全部加载完成之后才触发函数的执行 ​ 表单事件

faharciki的博客 151

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HTML DOM 事件

HTML DOM 事件 HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序。 事件通常与函数结合使用,函数不会在事件发生前被执行! (如用户点击按钮)。 提示:在 W3C 2 级 DOM 事件中规范了事件模型。 HTML DOM 事件 DOM:指明使用的 DOM 属性级别。 鼠标(Mouse)事件 属性 描述 DOM oncli...

老狼的专栏 314

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

js-事件-01

js-事件一、常见事件的分类1.UI事件2.键盘事件3.鼠标事件4.焦点事件5.表单事件二、将事件绑定到元素的三种方法1. HTML事件处理程序2. 传统的DOM事件处理程序3. DOM监听器 一、常见事件的分类 1.UI事件 当与浏览器UI 本身(而不是网页)交互时发生的事件 事件 说明 load Web页面加载完成 unload Web页面正在卸载(通常是因为请求了一个新...

学无止境 499

事件类型、绑定方式

事件类型1、表单事件:submit事件reset事件click事件change事件focus事件(不冒泡) (IE和ES5支持冒泡的focusin)blur事件(不冒泡) (IE和ES5支持冒泡的focusout)input事件(ES5 textinput提供更方便的获取输入文字的方案)2、Window事件load事件DOMContentLoaded事件readyStatechage事件unload

初漾的博客 559

2-5JavaScript\第9节 DOM对象\第10节 JavaScirpt中的事件

这里写自定义目录标题\第9节 DOM对象15_DOM_概述16_DOM_Document对象_获取Element方法 \第9节 DOM对象 15_DOM_概述 ## DOM: * 概念: Document Object Model 文档对象模型 * 将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行CRUD的动态操作 * W3C DOM 标准被分为 3 个不同的部分: * 核心 DOM - 针对任何结构化文档的标准模型 * Document:文档对象

qq_42788016的博客 141

js第七天笔记

web apis

孤城星空的博客 87

JavaScript学习笔记 06、DOM元素—②事件

文章目录前言一、事件监听1.1、常见的鼠标事件监听1.2、常见的键盘事件监听1.3、常见的表单事件监听1.4、常见的页面事件监听二、事件传播2.1、认识捕获阶段与冒泡阶段2.2、DOM0级事件与DOM2级事件(onXXX、addEventListener())两个级别事件介绍示例测试1、捕获阶段与冒泡阶段(查看其执行顺序)2、DOM0级书写的两个相同事件(后覆盖前,只生效一个)3、DOM2级书写的两个相同事件(按照顺序执行,生效所有)4、DOM0级与DOM2级同时存在(按照顺序来)三、事件对象(event,

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 1347

JavaScript总结(二) Dom

Dom Html Dom能够通过Js进行访问,在dom中所有的元素都被定义为对象. 方法和基本使用 增删改 //增 document.createElement(element) //添加 //删 document.removeChild(element) //删除 //改 document.repalceChild(element) //替换 //添加 document.appendChild(element) 查 //根据id 查找元素 document.getElementBy

carly_ssj的博客 254

Javascript -DOM 事件机制

DOM 事件机制

xiangxiang的博客 229

【Javascript —— DOM】

目录javascript DOMDOM简介DOM树结构获取DOM页面元素getElementByldgetElementsByClassNamegetElementsByTagNamegetElementsByTagNamequerySelectorquerySelectorAllDOM关系parentNode与parentElementchildNodes与childrenfirstElementChild与lastElementChildnextSibling与 nextElementSiblingin

Rita_zf的博客 523

JavaScript DOM及其操作(事件)

本文主要介绍JavaScript中 DOM这里事件的相关内容,包括操作事件的方法,常见事件类型、事件对象属性和方法等。

modao的博客 2121
上一篇: javaScript语法基础(函数,对象,常用类Array,String,Math和Date)
下一篇: Javascript中DOM操作和事件监听综合练习 (具备三种功能的轮播图案例)
CH040708
博客等级 码龄2年 217粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值