JavaWeb,JavaScript的学习(下)

事件

事件可以是浏览器行为,也可以是用户行为。当这些行为发生时,可以自动触发对应的JS函数的运行,称之为事件发生。JS的事件驱动指的就是行为触发代码运行的特点

常见事件

鼠标事件

onclick:当用户点击某个对象时调用的事件句柄

oncontextmenu:在用户点击鼠标右键打开上下文菜单时触发

ondblclick:当用户双击某个对象时调用的事件句柄

onmousedown:鼠标按钮被按下

onmouseenter:当鼠标移动到元素上时触发

onmouseleave:当鼠标移出元素时触发

onmousemove:鼠标被移动

onmouseover:鼠标移动到某元素上

onmouseout:鼠标从某元素移开

onmmouseup:鼠标按键被松开

键盘事件

onkeydown:某个键盘按键被按下

onkeypressdown:某个键盘按键被按下并松开

onkeyup:某个键盘按键被松开

表单事件

onblur:元素失去焦点时触发

onchange:该事件在表单元素的内容发生改变时触发

onfocus:元素获取焦点时触发

onfocusin:元素将要获取焦点时触发

onfocusout:元素将要失去焦点时触发

oninput:元素获取用户输入时触发

onreset:表单重置时触发

onsearch:用户向搜索域输入文本时触发

onselect:用户选取文本时触发

onsubmit:表单提交时触发

事件的绑定方式

事件的绑定方式有两种,一是通过元素的属性绑定,二是通过DOM编程动态绑定

注意事项:

  1. 一个事件可以同时绑定多个函数
  2. 一个元素可以绑定多个事件

通过元素的属性绑定

在元素内加上属性:事件名=”函数名()” 就能让事件发生时触发指定的函数

例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>function testFocus(){console.log("获得焦点了")}function testLoseFocus(){console.log("失去焦点")}function testChange(){console.log("内容改变")}function testChange2(value){console.log("选项改变为"+value)}function testSumit(){alert("提交成功")}function testReset(){alert("重置了")}</script>
</head>
<body><form action="表单常见事件.html" method="get" onsubmit="testSumit()" onreset="testReset()">用户昵称:<input type="text" name="realName" onfocus="testFocus()" onblur="testLoseFocus()" onchange="testChange()"><br>登录账号:<input type="text" name="logoinName"><br><input type="submit" name="smt" value="注册"> <input type="reset" name="res" value="清空"><br>选择城市:<select name="city" onchange="testChange2(this.value)"><option value="1">赣州</option><option value="2">吉安</option><option value="3">南昌</option><option value="4">九江</option></select></form>
</body>
</html>

通过DOM编程动态绑定

附:页面加载事件:onload,即页面加载完后才触发

事件的触发除了可以是DOM编程触发之外,还可以是DOM编程触发

通过DOM获得要操作的元素以及绑定事件的操作为:

//通过dom获得要操作的元素var btn = document.getElementById("btn1")btn.onclick=function(){alert("按钮单击了")}

但是由于html代码要由上而下执行,要想将此操作写在头标签中,就要使用到onload。

将以上操作放在一个函数(假设名为ready)内,在body标签中加上属性οnlοad=”ready()“,在页面加载完后(即整个html代码执行),函数ready内的操作最后加载出来,而id为btn1的元素更早加载出来,就可以将此操作放在头标签中,例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>function ready(){//通过dom获得要操作的元素var btn = document.getElementById("btn1")btn.onclick=function(){alert("按钮单击了")}}</script>
</head>
<body onload="ready()"><button id="btn1">按钮</button>
</body>
</html>

可以简写为:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>window.onload=function(){//通过dom获得要操作的元素var btn = document.getElementById("btn1")btn.onclick=function(){alert("按钮单击了")}}</script>
</head>
<body><button id="btn1">按钮</button>
</body>
</html>

BOM编程

BOM是Browser Object Model的简写,即浏览器对象模型。

BOM由一系列对象组成,是访问、控制、修改浏览器的属性和方法((通过window对象及属性的一系列方法 控制浏览器行为的一种编程)

BOM没有统一的标准(每种客户端都可以自定标准)。

BOM编程是将浏览器窗口的各个组成部分抽象成各个对象,通过各个对象的API操作组件行为的一种编程

BOM编程的对象结构如下

window:顶级对象,代表整个浏览器窗口

  • location对象:window对象的属性之一,代表浏览器的地址栏
  • history对象:window对象的属性之一,代表浏览器的访问历史
  • screen对象:window对象的属性之一,代表屏幕
  • navigator对象:window对象的属性之一,代表浏览器软件本身
  • document对象:window对象的属性之一,代表浏览器窗口目前解析的html文档
  • console对象:window对象的属性之一,代表浏览器开发者工具的控制台
  • localStorage对象:window对象的属性之一,代表浏览器的本地数据持久化存储
  • sessionStorage对象:window对象的属性之一,代表浏览器的本地数据会话级存储

常见API

window对象的API

三种弹窗方式:

alert:信息提示框

prompt:信息输入框

confirm:信息确认框

setTimeout:定时执行指定函数,需要的两个参数分别为一个函数和一个指定的毫秒数

这些函数前的window.可以省略

例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>function fun1(){window.alert("hello")}function fun2(){var aa =window.prompt("请输入:")console.log(aa)}function fun3(){var bb =window.confirm("确定吗?")console.log(bb)}function fun4(){window.setTimeout(function(){console.log("hello")},5000)}</script>
</head>
<body><button onclick="fun1()">信息提示框</button><button onclick="fun2()">信息确认框</button><button onclick="fun3()">信息输入框</button><button onclick="fun4()">五秒后向控制台打印hello</button>
</body>
</html>

history属性的API

history.forward():向前翻页,下一页

history.back():向后翻页,上一页

history.go(n):向前翻n页

例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>function funA(){history.back()}function funB(){history.forward()}</script>
</head>
<body><button onclick="funA()">上一页</button><button onclick="funB()">下一页</button><a href="<http://www.atguigu.com>">尚硅谷</a>
</body>
</html>

location属性的API

location.href:网页的地址,可以操作其属性进行赋值达到跳转页面的目的

sessionStorage和localStorage的API

sessionStorage是存储会话级别的数据,即浏览器关闭即清除

localStorage是存储持久级别的数据,即浏览器关闭还在

sessionStorage.setItem()和localStorage.setItem():存储数据,数据的格式为key-value格式,即两个参数,第一个是key,第二个是value

sessionStorage.getItem()和localStorage.getItem():获取数据,参数为数据的key值,返回值为value值

sessionStorage.removeItem()和localStorage.removeItem():移除数据,参数为想要移除的数据的key值

console属性的API

console.log():向控制台打印

DOM编程

DOM编程就是使用document对象的API完成对网页HTML文档进行动态修改,以实现网页数据和样式动态变化效果的编程。

document对象代表整个html文档,可以用来访问页面中的所有元素,是最复杂的一个dom对象。

根据HTML代码结构特点,document对象本身是一种树形结构的文档对象

DOM编程的步骤:获得DOM树—>从document中获取要操作的元素—>对元素进行操作

获取页面元素的几种方式

通过document获得元素

document.getElementById():根据元素的Id值获取页面上的唯一的一个元素

document.getElementByTagName():根据标签名获取一个或多个元素

document.getElementByName():根据元素的name属性获取指定name的元素

document.getElementByClassName():根据元素的class属性值获取指定的元素

通过父元素获取子元素

假如通过document获取了父元素a,操作元素a使用a.children就可以获得a的所有子元素组成的集合

a.firstElementChild:通过父元素a获取a的第一个子元素

a.lastElementChild:通过父元素a获取a的最后一个子元素

通过子元素获取父元素

假如通过document获取了子元素b,操作元素b使用b.parentElement就可以获得b的父元素

通过当前元素获取兄弟元素

假如通过document获取了子元素b,操作元素b使用b.previousElementSibling就可以获得b的前一个子元素,使用b.nextElementSibling就可以获得b的后一个子元素

对元素进行操作

操作元素属性值

先获取元素,再使用 元素名.属性名=”属性值” 为元素赋新的属性值即可操作元素属性值

操作元素样式

先获取元素,再使用 元素名.style.样式名=”样式” 为元素赋新的样式即可操作元素样式

原始样式名中的中横线”-”在操作样式时要去掉,然后将横线后的第一个字母大写,例:border-radius —> borderRadius

操作元素文本

先获取元素,再使用 元素名.innerText=“文本内容” 或元素名.innerHTML=”识别HTML语法的文本内容”

innerText:双标签元素中间的文本,不会识别HTML语法

innerHTML:双标签元素中间的文本,会识别HTML语法

操作元素的例子:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>function changeAttribute(){var in1 =document.getElementById("in1")in1.type="button"in1.value="world"}function changeStyle(){var in1 =document.getElementById("in1")in1.style.color="yellow"in1.style.borderRadius="5px"}function changeText(){var div1 = document.getElementById("div01")div1.innerText="world"}</script><style>#in1{color: red;}</style>
</head>
<body><input type="text" value="hello" id="in1"><br><button onclick="changeAttribute()">变化属性</button><button onclick="changeStyle()">变化样式</button><div id="div01">hello</div><button onclick="changeText()">变化文本</button>
</body>
</html>

增删元素

document.createElement(“标签名”):创建元素节点并返回,但不会自动添加到文档中

document.createTextNode(“文本值”):创建文本节点并返回,但不会自动添加到文档中

element.appendChild(ele):将ele添加到元素element的所有子节点后面

parentEle.insertBefore(newEle,targetEle):将newEle插入到targetEle前面

parentEle.replaceChild(newEle, oldEle):用新节点替换原有的旧子节点

element.remove():删除元素element

例:一个按钮在有序列表最后处增加一条吉安,再一个按钮删除吉安:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>function addJA(){var ja =document.createElement("li")ja.id="ja"ja.innerText="吉安"var cityul =document.getElementById("city")cityul.appendChild(ja)}function removeJA(){var ja = document.getElementById("ja")ja.remove()}</script>
</head>
<body><ul id="city"><li id="bj">北京</li><li id="sh">上海</li><li id="sz">深圳</li><li id="gz">赣州</li></ul><hr><button onclick="addJA()">增加吉安</button><button onclick="removeJA()">删除吉安</button>
</body>
</html>

JS中的正则表达式

var reg = /正则表达式/修饰符 :定义一个正则表达式

reg.test(str):验证字符串str是否满足正则表达式

正则表达式的修饰符:

g:对整个字符串进行查找,即全局匹配

i:忽略大小写的匹配

m:执行多行匹配

正则表达式语法见网址:正则表达式 – 语法 | 菜鸟教程 (runoob.com)

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

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

相关文章

fuckingAlgorithm【双指针】19.删除链表的倒数第N个结点

19. Remove Nth Node From End of List remove-nth-node-from-end-of-list 要寻找倒数k个节点&#xff0c; 从虚拟头节点0开始走&#xff0c;p1指针先走k步&#xff0c;到达第k个节点然后p2指针从虚拟节点0开始&#xff0c;和p1一起同步前进&#xff0c;直到p1走到末尾n1节点…

LeetCode——82. 删除排序链表中的重复元素II

通过万岁&#xff01;&#xff01;&#xff01; 题目&#xff1a;题目的大致意思就是&#xff0c;给你一个升序的链表&#xff0c;然后让你里面的元素有重复的&#xff0c;所有重复的元素都进行一个删除。思路&#xff1a;这个题的简化版是“83.删除排序链表中的重复元素”。看…

深度学习笔记(七)——基于Iris/MNIST数据集构建基础的分类网络算法实战

文中程序以Tensorflow-2.6.0为例 部分概念包含笔者个人理解&#xff0c;如有遗漏或错误&#xff0c;欢迎评论或私信指正。 截图和程序部分引用自北京大学机器学习公开课 认识网络的构建结构 在神经网络的构建过程中&#xff0c;都避不开以下几个步骤&#xff1a; 导入网络和依…

【Android+物联网】Android封装MQTT连接阿里云物联网平台

前言&#xff1a; 亲测可行&#xff0c;本文实现Android封装MQTT连接阿里云物联网平台。将MQTT协议和连接阿里云平台的操作通过Android studio写入APP中&#xff0c;并简单设计UI。实现手机APP远程控制单片机LED灯亮灭的功能。 关于《Android软件开发》&#xff0c;见如下专栏…

手拉手Vue3生命周期实战应用

每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比如设置好数据侦听&#xff0c;编译模板&#xff0c;挂载实例到 DOM&#xff0c;以及在数据改变时更新 DOM。在此过程中&#xff0c;它也会运行被称为生命周期钩子的函数&#xff0c;让开发者有机会在特定阶…

HTTPS是什么意思

HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer&#xff0c;中文含义为“超文本传输协议在安全加密字层”&#xff0c;简单来说就是加密数据传输&#xff0c;通俗的说就是安全连接。 HTTPS安全超文本传输协议&#xff0c;它是一个安全通信通道&#xff0c;它…

SpringAMQP的使用

1. 简介&#xff1a; SpringAMQP是基于RabbitMQ封装的一套模板&#xff0c;并且还利用SpringBoot对其实现了自动装配&#xff0c;使用起来非常方便。 SpringAmqp的官方地址&#xff1a;https://spring.io/projects/spring-amqp SpringAMQP提供了三个功能&#xff1a; 自动声…

【linux】查看Debian应用程序图标对应的可执行命令

在Debian系统中&#xff0c;应用程序图标通常与.desktop文件关联。您可以通过查看.desktop文件来找到对应的可执行命令。这些文件通常位于/usr/share/applications/或~/.local/share/applications/目录下。这里是如何查找的步骤&#xff1a; 1. 打开文件管理器或终端。 2. 导…

20240115如何在线识别俄语字幕?

20240115如何在线识别俄语字幕&#xff1f; 2024/1/15 21:25 百度搜索&#xff1a;俄罗斯语 音频 在线识别 字幕 Bilibili&#xff1a;俄语AI字幕识别 音视频转文字 字幕小工具V1.2 BING&#xff1a;音视频转文字 字幕小工具V1.2 https://www.bilibili.com/video/BV1d34y1F7…

<Linux> 进程间通信

目录 前言&#xff1a; 一、进程间通信 &#xff08;一&#xff09;进程间通信目的 &#xff08;二&#xff09;进程通信的要求 &#xff08;三&#xff09;进程间通信分类 二、管道 &#xff08;一&#xff09;什么是管道 &#xff08;二&#xff09;基本原理 &#…

会声会影2024什么时间发布呢?会声会影2024会有那些新功能

近年来&#xff0c;随着科技的不断进步&#xff0c;各种软件的功能越来越强大&#xff0c;其中最为常用的莫过于视频编辑软件。而会声会影作为一款颇受欢迎的视频编辑软件&#xff0c;备受用户关注。那么&#xff0c;会声会影2024什么时间发布呢&#xff1f; 首先&#xff0c;我…

Java 使用 EasyExcel 爬取数据

一、爬取数据的基本思路 分析要爬取数据的来源 1. 查找数据来源&#xff1a;浏览器按 F12 或右键单击“检查”打开开发者工具查看数据获取时的请求地址 2. 查看接口信息&#xff1a;复制请求地址直接到浏览器地址栏输入看能不能取到数据 3. 推荐安装插件&#xff1a;FeHelper&a…

搭建知识付费小程序平台:如何避免被坑,选择最佳方案?

随着知识经济的兴起&#xff0c;知识付费已经成为一种趋势。越来越多的人开始将自己的知识和技能进行变现&#xff0c;而知识付费小程序平台则成为了一个重要的渠道。然而&#xff0c;市面上的知识付费小程序平台琳琅满目&#xff0c;其中不乏一些不良平台&#xff0c;让老实人…

高可用架构去中心化重要?

1 背景 在互联网高可用架构设计中&#xff0c;应该避免将所有的控制权都集中到一个中心服务&#xff0c;即便这个中心服务是多副本模式。 对某个中心服务&#xff08;组件&#xff09;的过渡强依赖&#xff0c;那等同于把命脉掌握在依赖方手里&#xff0c;依赖方的任何问题都可…

个性化定制的知识付费小程序,为用户提供个性化的知识服务

明理信息科技知识付费saas租户平台 随着知识经济的兴起&#xff0c;越来越多的人开始重视知识付费&#xff0c;并希望通过打造自己的知识付费平台来实现自己的知识变现。本文将介绍如何打造自己的知识付费平台&#xff0c;并从定位、内容制作、渠道推广、运营维护四个方面进行…

R语言【paleobioDB】——pbdb_taxa():获得多个类群名的基本信息

Package paleobioDB version 0.7.0 paleobioDB 包在2020年已经停止更新&#xff0c;该包依赖PBDB v1 API。 可以选择在Index of /src/contrib/Archive/paleobioDB (r-project.org)下载安装包后&#xff0c;执行本地安装。 Usage pbdb_taxa (...) Arguments 参数【...】&#…

如何保证Kafka不丢失消息

丢失消息有 3 种不同的情况&#xff0c;针对每一种情况有不同的解决方案。 生产者丢失消息的情况消费者丢失消息的情况Kafka 弄丢了消息 生产者丢失消息的情况 生产者(Producer) 调用send方法发送消息之后&#xff0c;消息可能因为网络问题并没有发送过去。所以&#xff0c;我们…

RocketMq基础

转载&#xff1a;https://blog.csdn.net/SmallCat0912/article/details/128535930 可视化平台镜像 # 拉取镜像 docker pull rocketmqinc/rocketmq:4.3.2# 修改镜像名字 docker tag 【镜像id】 rocketmq:4.3.2可视化平台镜像: # 拉取镜像 docker pull styletang/rocketmq-cons…

@Controller层自定义注解拦截request请求校验

一、背景 笔者工作中遇到一个需求&#xff0c;需要开发一个注解&#xff0c;放在controller层的类或者方法上&#xff0c;用以校验请求参数中(不管是url还是body体内&#xff0c;都要检查&#xff0c;有token参数&#xff0c;且符合校验规则就放行)是否传了一个token的参数&am…

从车联网到智慧城市:智慧交通的革新之路

一、引言 1、智慧城市的概念和发展背景 智慧城市&#xff08;Smart City&#xff09;是指以信息技术为基础&#xff0c;运用信息与通信等手段&#xff0c;对城市各个核心系统各项关键数据进行感测、分析、整合和利用&#xff0c;实现对城市生活环境的感知、资源的调控&#x…