[HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

news2024/11/18 9:50:08

希望你开心,希望你健康,希望你幸福,希望你点赞!

最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!!

喵喵喵,你对我真的很重要!

目录

前言

JavaScript事件分析

JavaScript事件概述

事件类型

事件句柄

事件处理

事件处理-静态指定

事件处理-动态指定

事件处理-特定对象的特定事件指定

事件处理程序的返回值

表单事件

获得及失去焦点事件

提交及重置事件

改变及选择事件

鼠标事件

鼠标单击、双击事件

鼠标单击、双击事件

鼠标移动事件

键盘事件

窗口事件

综合练习

总结


前言

Web 前端开发工程师应掌握以下内容:

了解 JavaScript 事件类型。              
理解事件发生时事件处理的三种方式。
学会利用表单的提交及重置事件对表单的数据进行校验。
理解鼠标事件中的鼠标单击及鼠标移动事件。
掌握常用的键盘及窗口事件。

JavaScript事件分析

JavaScript事件概述

    事件编程:让用户不仅能够浏览页面中的内容,而且还可以和页面元素进行交互。

       事件-事件是可以被JavaScript侦测到的行为(ACTION)


事件类型

事件类型:

1.鼠标事件

2.键盘事件

3.HTML事件

4.突变事件

鼠标单击例如单击button、选中checkboxradio等元素;鼠标进入、悬浮或退出页面的某个热点:例如鼠标停在一个图片上方或者进入table的范围;

键盘按键:当按下按键或释放按键时;

HTML事件:例如页面body被加载时;在表单中选取输入框或改变输入框中文本的内容:例如选中或修改了文本框中的内容;

突变事件:主要指文档底层元素发生改变时触发的事件,如DomSubtreeModified(DOM子树修改)


事件句柄

事件句柄 (event handler

       事件句柄事件发生要进行的操作onload属性就是我们所说的事件句柄,也称为事件属性

基本语法

      <标记 事件句柄=JavaScript代码”…></标记>

  如: <body onload=“show()”>…    </body>

格式:    onload  =“show();”    /*load  */


事件处理

 当一个事件发生时,如果需要截获并处理该事件,只需要定义该事件的事件句柄所关联的事件处理代码,具体的处理方式有以下3种:

l 静态指定: <HTML 标记 ... 事件句柄 1=" 事件处理程序 " [ 事件句柄 2 = " 事件处理程序 " ...]></HTML 标记 >
l 动态指定

<事件主角-对象>.<事件句柄>=<事件处理程序>;

l 特定对象特定事件的指定

<script type=“text/javascript”for=“对象” event=“事件”>

  //事件处理程序代码

</script>


事件处理-静态指定

基本语法:<标记 ... 事件句柄1="事件处理程序1" [事件句柄2 ="事件处理程序2" ...]

语法说明:一个标记可以同时指定多个事件处理程序,事件处理程序既可以是<script>标记中的自定义函数,还可以直接将事件处理代码写在此位置。

事件处理-动态指定

事件处理程序在JavaScript中动态指定(分配)

      <事件主角-对象>.<事件句柄>=<事件处理程序>;

        obj.onclick=function(){disp();}  obj.onclick();//调用

事件处理-特定对象的特定事件指定

特定对象的特定事件指定:

   <script type="text/javascript" for="对象" event="事件句柄">

             //事件处理程序代码

     </script>


事件处理程序的返回值

事件处理程序的返回值

         JavaScript中通常事件处理程序不需要有返回值,这时浏览器会按默认方式进行处理;

        很多情况下需要使用返回值,来判断事件处理程序是否正确进行处理。返回值类型:boolean布尔型值

      浏览器根据返回值的类型决定下一步如何操作。当返回值为true,进行默认操作当返回值为 false,阻止浏览器的下一步操作

基本语法:事件句柄=“return 函数名(参数);"      


表单事件

Form表单是一种重要的与用户进行交互的工具,它用于采集用户输入各类信息。


获得及失去焦点事件

       当表单中的元素获得焦点时会触发Focus获得事件,当表单中的元素失去焦点时会触发Blur失去焦点事件。

<!-- edu_15_2_1.html -->
<html>
    <head>
        <title>获得/失去焦点测试</title>
        <script language="javascript" type="text/javascript">
      function getFocus(){document.bgColor ="red“;}
       function loseFocus(){document.bgColor ="blue“;}
     </script>
    </head>
    <body>
     <form><br />
<input type="button" onfocus="getFocus()" value="获得/失去焦点触发事件" onblur="loseFocus()"/>
     </form>
    </body>
</html>

提交及重置事件

      表单的Submit事件触发后会将表单中的数据提交到服务器端,Reset事件触发后会将表单中的数据重置为初始值。

<!-- edu_15_2_2.html -->
<html>
<head>
<script  type="text/javascript">
function submitTest() {
var msg ="表单数据的获取:\n";
var username = document.getElementById("input1").value;
msg+="用户名:";
msg+=username;
var psw = document.getElementById("input2").value;
            msg+=",\n密码:是";
             msg+=psw;
             alert(msg);
            return false;
            }
function resetTest() {alert("将数据清空");}

</script>
<style type=“text/css“>                     fieldset{width:350px;height:150px;}
</style>
</head> 
<body>
  <form onsubmit="return submitTest();"  onreset="resetTest()"> 
   <fieldset>
   <legend>表单数据提交</legend>
   <br><label>用户名:</label><input type="text" id="input1">
   <br><label>密&nbsp;码:</label><input type="password" id="input2">
   <br><input type="submit" value="提交">
   <input type="reset" value="重置">
   </fieldset>
</form>
</body>
</html>

改变及选择事件

<!-- edu_15_2_3.html -->
<html>
   <head>
<title>下拉菜单</title>
<script language="javascript">
function changeImage() {            
     var a = document.getElementById("game").selectedIndex;
    //获取下拉框中选择项
     document.getElementById("show").src = document.getElementById("game").options[a].value;//将图片更改为对应选择项
}
</script>
</head>
<body>
<div align="center">
<form >
<select id="game" onChange="changeImage()" >
<option value="pic4.jpg">--请选择--</option>
<option value="pic0.jpg">平板电视</option>
<option value="pic1.jpg">笔记本电脑</option>
<option value="pic2.jpg">单反相机</option>
<option value="pic3.jpg">智能手机</option>
</select>
</form>
</div>
<p align="center">
<img  src="pic4.jpg"  id="show">
</p>		
</body>
</html>

注:当选择列表项时发生改变事件,调用函数更新图像


鼠标事件

用户在页面上操作鼠标会触发鼠标事件,如用户单击鼠标左键会触发Click事件,双击鼠标时会触发DblClick事件,移动鼠标会触发鼠标移动事件


鼠标单击、双击事件

<!-- edu_15_3_1.html -->
<!doctype html>
<html lang="en">
	<head><meta charset="UTF-8">
	  <title>鼠标单击事件</title>
	<script type="text/javascript">
	function $(id){return document.getElementById(id);}
	function copyText(){	$("target").value=$("source").value;	}
	</script>
	</head>
	<body>
	  <h4>文本框内容复制</h4>
	<form method="post" action="">
	来源文本框:<input type="text" id="source" value="">
	<br>目标文本框:<input type="text" id="target" readonly>
	<br><input type="button" value="复制文本框内容" onclick="copyText();">
	</form>	</body>
</html>


鼠标单击、双击事件

<!-- edu_15_3_1.html -->
<!doctype html>
<html lang="en">
	<head><meta charset="UTF-8">
	  <title>鼠标单击事件</title>
	<script type="text/javascript">
	function $(id){return document.getElementById(id);}
	function copyText(){	$("target").value=$("source").value;	}
	</script>
	</head>
	<body>
	  <h4>文本框内容复制</h4>
	<form method="post" action="">
	来源文本框:<input type="text" id="source" value="">
	<br>目标文本框:<input type="text" id="target" readonly>
	<br><input type="button" value="复制文本框内容" onclick="copyText();">
	</form>	</body>
</html>

鼠标移动事件

       鼠标移动事件有:MouseOver事件、MouseOut事件、MouseDownMouseUp等事件

<!-- edu_15_3_2.html -->
<html>
<head>
<title>鼠标移动事件</title>
<script type="text/javascript">
    function mouseOver(){//鼠标盘旋
     document.getElementById('b1').src ="eg_mouse1.jpg”
    }
    function mouseOut(){//鼠标移出
       document.getElementById('b1').src ="eg_mouse2.jpg”
    }
</script>
</head>

键盘事件

    通过 windowevent对象的keyCode属性来获取按键代码的值,其中:回车:13094857;AaZz:6590;

  使用方法:window.event.keyCodeevent.keyCode


窗口事件

<!--  edu_15_5_1.html -->
<html>
    <head>
        <title>窗口事件举例</title>
      <script  type="text/javascript">
     function load(){alert("欢迎访问本页面!");}
     function myunload(){alert("欢迎下次访问!“);}
    </script>
  </head>
  <body onload="load();" onbeforeunload=" myunload();" 
  <h4>窗口事件的应用</h4>
  <p onclick="alert('单击我!')">单击我!</p>
  </body>
</html>

综合练习

页面设计分析:

       采用表单和表单控件完成页面布局。采用样式表完成页面效果控制。

       自定义2JS函数,分别是检查输入数据的有效性checkReg()和清除信息clearInfo()函数。

通过 ID 获取页面元素的通用函数:

              function $(id){ return document.getElementById(id); }

<!--  edu_15_6_1.html -->
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户注册页面</title>
<style type="text/css">
strong{color:red;font-style:bolder;}
fieldset{width:560px;height:186px;padding:0px 50px;}
#button{margin:10px 20px;}
</style>
<script  type="text/javascript">
function $(id){return document.getElementById(id);}
function checkReg(){			
var username=$("myname").value;
var pwd=$("mypwd1").value;
var pwdConfirm=$("mypwd2").value;
var checkright=true;			
if(username=="" || pwd=="")  //两者中有一个为空
{
alert("请确认用户名和密码输入是否正确!!");
   checkright=false;
}else     //不为空,再判断用户名和密码的长度合法性
{ 
    if(username.length<6) {    
       alert("用户名长度太短,至少6个字符!!");
       checkright=false;
    } else if(pwd.length<6) {
      alert("密码长度太短,至少6个字符!!");
       checkright=false;
    } else if(pwd!=pwdConfirm) {
       alert("两次输入的密码必须一致!!");
      checkright=false;
    } else{
        checkright=true;}
    }
    return checkright;
}
function clearInfo()
{
   var flag = confirm("确认要重置数据吗?");
   if(flag==true)
  {
    $("myname").value = "";
    $("mypwd1").value = "";
    $("mypwd2").value = "";
   }
}
</script>
</head>
<body>
<form action="regsuccess.html" method="get" onSubmit="return checkReg()" onReset="clearInfo()">
<fieldset>
   <legend align="center" >新用户注册</legend><br>
   <div>
   <label >用&nbsp;户&nbsp;名: </label>
   <input type="text" name="myname"><strong>(用户名要大于6位)</strong><br>
   <label> 登录密码: </label>
   <input type="password" name="mypwd1"><strong>(密码要大于6位)</strong><br>
  <label> 密码确认: </label>          
   <input type="password" name="mypwd2"><br>
  <input id="button" type="submit" value="用户注册" >
  <input  id="button" type="reset" value="重置">
  </div> 
 </fieldset>
</form>
</body>
</html>

总结

       本章介绍JavaScript脚本中的事件处理的概念、方法,列出了常用的事件及事件句柄,并且介绍了如何编写用户自定义的事件处理函数以及如何将它们与页面中用户的动作相关联,以得到预期的交互性能。

       重点介绍了Web开发中常用的表单事件、鼠标事件、键盘事件等。在表单事件中,详细介绍表单元素的焦点事件、表单提交与重置事件以及表单元素的选中及改变事件。在鼠标事件中,详细介绍鼠标单击及鼠标移动事件。在窗口事件中,主要介绍了装载事件和卸载事件。Web前端开发人员只要掌握JavaScript事件概念、事件触发类型和事件处理的方式,就可以开发出具有交互性、动态性的页面。


希望你开心,希望你健康,希望你幸福,希望你点赞!

最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!!

喵喵喵,你对我真的很重要!

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

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

相关文章

【计网】TCP的三次握手四次挥手

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 三次握手&#xff08;Connection Establishment&#xff09; 四次挥手&#xff08;Connection Termination&#xff09; 结语 我…

Echarts与后台(mongoose)交互

Echarts引入地址可参考 echarts组件引入 <template><div><div id"main" style"width: 600px;height:400px;"></div></div> </template><script setup> import { onMounted, ref } from vue; import * as echa…

JavaScript 数组、遍历

数组 多维数组&#xff1a;数组里面嵌套 一层数组为二维数组。一维数组的使用频率是最高的。 如果数组访问越界会返回undefined。 数组遍历 数组方法Array.isArray() 这个方法可以去判定一个内容是否是数组。

32单片机基础:GPIO输出

目录 简介&#xff1a; GPIO输出的八种模式 STM32的GPIO工作方式 GPIO支持4种输入模式&#xff1a; GPIO支持4种输出模式&#xff1a; 浮空输入模式 上拉输入模式 下拉输入模式 模拟输入模式&#xff1a; 开漏输出模式&#xff1a;&#xff08;PMOS无效&#xff0c;就…

基于SpringBoot的气象数据监测分析大屏

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

简单聊聊如何零基础入门机器视觉

在这个充满科技奇迹的时代里&#xff0c;机器视觉像一面魔法镜&#xff0c;赋予机器以“视觉”&#xff0c;让它们能够理解和解释这个世界。对于热爱探索新知的大学生和研究生们来说&#xff0c;学习机器视觉不仅是开启未来科技大门的钥匙&#xff0c;更是一次激动人心的冒险之…

RisingWave最佳实践-利用Dynamic filters 和 Temporal filters 实现监控告警

心得的体会 刚过了年刚开工&#xff0c;闲暇之余调研了分布式SQL流处理数据库–RisingWave&#xff0c;本人是Flink&#xff08;包括FlinkSQL和Flink DataStream API&#xff09;的资深用户&#xff0c;但接触到RisingWave令我眼前一亮&#xff0c;并且拿我们生产上的监控告警…

备战蓝桥杯————双指针技巧巧解数组1

利用双指针技巧来解决七道与数组相关的题目。 两数之和 II - 输入有序数组&#xff1a; 给定一个按升序排列的数组&#xff0c;找到两个数使它们的和等于目标值。可以使用双指针技巧&#xff0c;在数组两端设置左右指针&#xff0c;根据两数之和与目标值的大小关系移动指针。 …

动态规划--持续更新篇

将数字变成0的操作次数 1.题目 2.思路 在numberOfSteps函数中&#xff0c;首先设置f[0]为0&#xff0c;因为0已经是0了&#xff0c;不需要任何步骤。然后&#xff0c;使用一个for循环从1迭代到输入的整数num。对于每个整数i&#xff0c;如果i是奇数&#xff0c;则将f[i]设置为…

uniapp离线打包(使用Android studio打包)

一、准备工作 安装HbuilderX&#xff0c;记住版本号下载对应HbuilderX版本的Android离线SDK&#xff0c;如我使用3.6.18版本打包&#xff0c;则对应应下载3.6.18版本的SDK&#xff08;官网不提供旧版本的SDK&#xff0c;有些需要自己找&#xff09;官网下载地址&#xff1a;ht…

目标检测-Transformer-ViT和DETR

文章目录 前言一、ViT应用和结论结构及创新点 二、DETR应用和结论结构及创新点 总结 前言 随着Transformer爆火以来&#xff0c;NLP领域迎来了大模型时代&#xff0c;成为AI目前最先进和火爆的领域&#xff0c;介于Transformer的先进性&#xff0c;基于Transformer架构的CV模型…

QGIS编译(跨平台编译)之七十:【Windows编译错误处理】找不到vector_tile.pb.h、vector_tile.pb.cc

文章目录 一、错误描述二、错误原因分析三、错误处理一、错误描述 ①无法打开源文件“vector_tile.pb.h” ②无法打开包含文件:“vector_tile.pb.h”:No Such file or directory ③无法打开源文件:“vector_tile.pb.cc”:No Such file or directory 二、错误原因分析 qgis\…

MFC 配置Halcon

1.新建一个MFC 工程&#xff0c;Halcon 为64位&#xff0c;所以先将工程改为x64 > VC 目录设置包含目录和库目录 包含目录 库目录 c/c ->常规 链接器 ->常规 > 链接器输入 在窗口中添加头文件 #include "HalconCpp.h" #include "Halcon.h"…

Oracle迁移到mysql-表结构的坑

1.mysql中id自增字段必须是整数类型 id BIGINT AUTO_INCREMENT not null, 2.VARCHAR2改为VARCHAR 3.NUMBER(16)改为decimal(16,0) 4.date改为datetime 5.mysql范围分区必须int格式&#xff0c;不能list类型 ERROR 1697 (HY000): VALUES value for partition …

应急响应实战笔记03权限维持篇(3)

0x00 前言 攻击者在获取服务器权限后&#xff0c;会通过一些技巧来隐藏自己的踪迹和后门文件&#xff0c;本文介绍Linux下的几种隐藏技术。 0x01 隐藏文件 Linux 下创建一个隐藏文件&#xff1a;touch .test.txt touch 命令可以创建一个文件&#xff0c;文件名前面加一个 点…

使用pygame 编写俄罗斯方块游戏

项目地址&#xff1a;https://gitee.com/wyu_001/mypygame/tree/master/game 可执行程序 这个游戏主要使用pygame库编写俄罗斯方块游戏&#xff0c;demo主要演示了pygame开发游戏的主要设计方法和实现代码 下面是游戏界面截图 游戏主界面&#xff1a; 直接上代码&#xff1a…

RabbitMQ 部署方式选择

部署模式 RabbitMQ支持多种部署模式&#xff0c;可以根据应用的需求和规模选择适合的模式。以下是一些常见的RabbitMQ部署模式&#xff1a; 单节点模式&#xff1a; 最简单的部署方式&#xff0c;所有的RabbitMQ组件&#xff08;消息存储、交换机、队列等&#xff09;都运行在…

Redis可视化工具——RedisInsight

文章目录 1. 下载2. 安装3. RedisInsight 添加 Redis 数据库4. RedisInsight 使用 RedisInsight 是 Redis 官方出品的可视化管理工具&#xff0c;支持 String、Hash、Set、List、JSON 等多种数据类型的管理&#xff0c;同时集成了 RedisCli&#xff0c;可进行终端交互。 1. 下载…

数组与指针相关

二级指针与指针数组 #include <stdio.h> #include <stdlib.h> int main() { // 定义一个指针数组&#xff0c;每个元素都是一个指向int的指针 int *ptr_array[3]; // 为指针数组的每个元素分配内存 ptr_array[0] malloc(2*sizeof(int)); ptr_array[1] m…

转运机器人,AGV底盘小车:打造高效、精准的汽车电子生产线

为了满足日益增长的市场需求&#xff0c;保持行业领先地位&#xff0c;某汽车行业电子产品企业引入富唯智能AMR智能搬运机器人及其智能物流解决方案&#xff0c;采用自动化运输措施优化生产节拍和搬运效率&#xff0c;企业生产效率得到显著提升。 项目背景&#xff1a; 1、工厂…