【JavaEE】JavaScript(WebAPI)

news2024/9/28 23:49:44

努力经营当下,直至未来明朗!

文章目录

  • 前言
  • 一、前置知识
  • 二、【DOM】
    • 【获取元素】
    • 【事件】
    • 【操作元素】
      • 1.【获取/修改元素的内容】
      • 2.【获取/修改元素属性】
      • 3.【获取/修改 表单元素属性】
      • 4.【获取/修改样式属性】
    • 【操作节点】
      • 1.【新增节点】
      • 2.【删除节点】:removeChild
      • 简单案例
  • THINK


前言

一个人最大的痛苦来源于对自己无能的愤怒!

Hi,秃头也要坚持营业!
秃头
本文主要介绍JS中的【WebAPI】,以此来实现动态页面的效果。


一、前置知识

虽然已经学了一些js的语法,但是仍然无法写出页面的动态效果。
网页是运行在浏览器上的,学习js最大的目的就是为了能够和用户交互,进一步来操作网页的内容,此时就需要学习浏览器给js提供的API了。
(DOM是操作页面最主要的API)

  1. 前面学习的 JS 分成三个大的部分

ECMAScript: 基础语法部分
DOM API: 操作页面结构
BOM API: 操作浏览器

WebAPI 就包含了 DOM + BOM

  1. API 是一个更广义的概念, 而 WebAPI 是一个更具体的概念, 特指 DOM+BOM。
    所谓的 API 本质上就是一些现成的函数/对象, 让程序员拿来就用, 方便开发。
  2. API参考文档:API参考文档

可以在搜索引擎中按照 “MDN + API 关键字” 的方式搜索, 也能快速找到需要的 API 文档


二、【DOM】

DOM:Document Object Model文档对象模型。
文档就是html,对象就是js中的对象。那么DOM其实就是把html页面上的每个标签都对应成js中的一个对象,通过这个对象就能获取/修改到标签的内容和属性。

(DOM API 一共很多,咱们就只是介绍其中的一部分)

【获取元素】

  1. 获取元素 是进行后续操作的前提,需要先把页面上的某个元素拿到。
    (注:dir可以将元素以对象的形式打印出来!)
let div = document.querySelector();
// Document是浏览器提供的一个全局对象,就表示当前页面。
// dom api基本都是这个document对象的方法。

1
2

  1. 如果选择结果不唯一,此时标签选择器得到的结果只是第一个元素
    3

  2. 如果确实想要获取多个元素,可以使用querySelectorAll来完成,类似querySelector,参数也是选择器,只不过返回值是数组!可以通过下标的方式来获取需要的元素。
    56


【事件】

  • 用户针对浏览器进行如调整窗口大小、点击鼠标等操作都会由浏览器产生对应的“事件”。“事件”是和用户操作相关的,我们无法知道事件是啥时候来的,所以针对这些可能的用户操作能做的事情就是提前做好准备工作。
  • 因此:浏览器会根据用户操作产生对应的事件,再由提前准备好的用户代码针对不同的事件进行不同的处理。
  1. 想让div处理一下鼠标点击事件:
    (Chrome控制台默认会把相同的日志合并成一个,前面的数字表示重复出现了几次)
    7
    8

如果想要完全显示不合并,就 设置->组合相似消息的对钩取消
9

  1. 另外还有很多鼠标相关的事件(如:移动、进来、出去等)

  2. 事件的三个核心要素:
    ① 事件源:事件是哪个元素发出来的
    ② 事件类型:点击、移动、按下键盘、调整窗口等
    ③ 事件处理程序:触发事件之后执行哪个代码来进行操作


【操作元素】

元素就是html的标签,就是在js中先获取到对应的html对象之后再来操作其中的内容or属性。

1.【获取/修改元素的内容】

元素的内容:开始标签和结束标签之间夹着的东西。

  1. 可以使用innerHTML属性来获取/修改标签的元素内容(这个属性很有用!!)
    10

  2. innerText(没有上述innerHTML好用)
    Element.innerText 属性表示一个节点及其后代的“渲染”文本内容,不会获取到内部结构。

// 以下 HTMLElements 是对象!
// 读操作
var renderedText = HTMLElement.innerText;
// 写操作
HTMLElement.innerText = string;

不识别 html 标签,是非标准的(IE发起的)。 读取结果不保留html源码中的 换行 和 空格

2.【获取/修改元素属性】

元素属性:开始标签里面写的那些键值对
11

(不只是img标签,其他的所有标签的属性都是通过类似的方式来进行操作的)

  1. 补充:箭头函数(是匿名函数的简化写法):如 let max = (a,b) => a>b?a:b;

3.【获取/修改 表单元素属性】

  1. 属性修改相关:
    1)value: input 的值.
    // 通过input.value来获取输入框的值
    12
    13

  2. 表单(主要是指 input 标签)的以下属性都可以通过 DOM 来修改

  • value: input 的值.
  • disabled: 禁用
  • checked: 复选框会使用
  • selected: 下拉框会使用
  • type: input 的类型(文本, 密码, 按钮, 文件等)
  1. 【简单案例1】显示密码:通过修改type的属性
    15

  2. 【简单案例2】点击计数
    input里面存一个整数(通过value拿到该值),两个按钮:一个点击加1,一个点击减1

注意字符串转为整数类型的方法
② 补充一个浮点数转整数方法:移位(右移一位就相当于除以2的整数)

16

  1. 【简单案例3】操作复选框
    复选框的选择状态可以通过checked属性来进行设置
    17

4.【获取/修改样式属性】

1.行内样式:通过 style 直接在标签上指定的样式, 优先级很高。
适用于改的样式少的情况
20
(平时开发的时候行内样式并不常用,更常用的是使用选择器的方式来选中元素,再指定样式。其中最常用的就是类选择器,因此就可以通过修改元素的class属性实现修改样式的效果)

  1. 【案例4】开灯关灯/夜间模式
    21

(注:这里的div是单独在body内写的一段文本,设定了class:)
div


【操作节点】

1.【新增节点】

  1. 先创建一个元素:createElement
  2. 将新元素加到dom树上:appendChild

(理论上来说:每个变量创建前都是要加let的
如果不加let,就相当于创建了全局变量,语法上没有错误,但是不一定符合我们的要求。)
30

2.【删除节点】:removeChild

31

简单案例

  1. 【简单案例1】:猜数字
    生成一个1~100的随机整数,玩家输入数字,系统提示高了/低了/猜对了。
    注:JS中的Math.random(); 生成的是[0,1)之间的小数
    111

代码参考链接:猜数字

  1. 【简单案例2】:表白墙
    页面上填写谁对谁说了一句啥样的话,点击提交就把数据给显示到网页上。
    222
    代码参考:表白墙

① 当前表白墙,一旦页面刷新之后之前提交的数据就没有了:这是因为当前提交的数据都是直接保存在**页面“内存”**中的。

② 浏览器能否持久化存储数据呢? 也不是不能,但是有诸多限制:浏览器要考虑安全性,则会禁止JS直接访问电脑硬盘。

③ 浏览器为了能够让JS持久化存储数据留下了一定的机制来实现,但是同样有诸多限制。所以更好的办法是使用 服务器 来保存数据:即每次点击提交都是给服务器发送个请求,服务器来负责存储表白墙中的数据。每次打开页面,都让页面从服务器获取数据列表。
另外,这样做的好处:无论哪个客户端,都能够获取到同一份数据列表。(详细在servlet会补充)


THINK

  1. dom获取/操作元素以及操作节点
  2. 事件
  3. 实例

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

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

相关文章

【2-3个月左右录用】物联网、无线通信类、人工智能、传感器、人机交互等领域必投快刊,进展顺利,12月截稿

【期刊简介】3.0-4.0,JCR2/3区,中科院4区 【检索情况】SCI在检,正刊 【征稿领域】安全和隐私雾云辅助物联网网络 【参考周期】2-3个月左右 【截稿日期】2022年12月31日 【期刊简介】2.0-3.0,JCR3区,中科院4区 【检索情…

【白嫖】如何低价续费服务器

背景 现在各大云服务商的学生价服务器都已经关闭了,华为云、阿里云、百度云,以前都有学生价服务器,一年只要99。现在我找半天都没找到入口,而原价的一年得500起步。。。 但是!!!腾讯虽然也取消了…

【系统性学习】Linux Shell易忘重点整理

本文主要基于《实用Linux Shell编程》总结,并加入一些网上查询资料和博主自己的推断。 其中命令相关的,已抽取出来在另一篇系统性学习】Linux Shell常用命令中,可以一起使用。 文章目录一、基础知识二、命令与环境三、变量和数组四、条件流程…

Linux多线程C++版(八) 线程同步方式-----条件变量

目录1.条件变量基本概念2.条件变量创建和销毁3.条件变量等待操作4.条件变量通知(唤醒)操作5.代码了解线程同步6.线程的状态转换7.代码改进--从一对一到一对多1.条件变量基本概念 互斥锁的缺点是它只有两种状态:锁定和非锁定条件变量通过允许线程阻塞和等待另一个线…

Kamiya丨Kamiya艾美捷抗FLAG多克隆说明书

Kamiya艾美捷抗FLAG多克隆化学性质: 程序:用FLAG肽免疫家兔与KLH偶联。多次免疫后在弗氏佐剂中收集血清使用固定在固相上的肽。 规范: 使用氨基末端分析抗体Met FLAG BAP、氨基末端FLAG-BAP和羧基末端FLAG-BAP融合蛋白和Invitrogen Posite…

跳槽,从这一个坑,跳进另外一个坑

软件测试员跳槽有一个奇怪的现象:那些跳槽的测试员们,总是从一个坑,跳进另一个坑中,无论怎么折腾,也没能拿到更好的offer,更别说,薪资实现爆炸式增长,自身价值得到升华~ 在如今经验…

【Web安全】注入攻击

目录 前言 1、注入攻击 1.1 SQL注入 1.2 数据库攻击技巧 1.2.1 常见的攻击技巧 1.2.2 命令执行 1.2.3 攻击存储过程 1.2.4 编码问题 1.2.5 SQL Column Truncation 1.3 正确防御SQL注入 1.4 其他注入攻击 1.4.1 XML注入 1.4.2 代码注入 1.4.3 CRLF注入 前言 年…

Kotlin高仿微信-第53篇-添加好友

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

数商云SRM系统询比价有何优势?供应商平台助力汽车零部件企业快速查找供应商

随着中国汽车行业的高速发展、汽车保有量的增加以及汽车零部件市场的扩大,我国汽车零部件行业得到了迅速发展,增长速度整体高于我国整车行业。数据显示,我国汽车零部件的销售收入从2016年3.46万亿元增长至2020年的4.57万亿元,年均…

世界杯——手动为梅西标名

梅西的铁粉来集赞啦。 今天带来了一个为图片添加字样的小功能,我们的测试目标图片是: 我们的测试目标是: 我们使用的是Python语言,使用了Image包用作图片处理,matplotlib包用作坐标查阅,这个坐标还是很好看…

微服务框架 SpringCloud微服务架构 8 Gateway 网关 8.5 全局过滤器

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构8 Gateway 网关8.5 全局过滤器8.5.1 全局过滤器 GlobalFilter8.5.2 案例8.…

segmentation

(用于医学图像分割的金字塔医学transformer) Pyramid Medical Transformer for Medical Image Segmentation 基于CNN的模型通过低效地堆叠卷积层来捕获长期依赖性,但基于注意力的模型明确地构建了所有范围的关系。然而,为全局关系分配可学习参数是昂贵…

WebAPI项目搭建及其发布测试

目录 1.创建项目 2.配置 3.发布 4.测试页面 1.创建项目 (1)创建ASP.NET Web应用程式,如下图: (2)选择Empty,勾选Web API,点击确定创建,如下图: (3&#x…

解决Netty那些事儿之Reactor在Netty中的实现(创建篇)-上

本系列Netty源码解析文章基于 4.1.56.Final版本 在上篇文章深入讲解Netty那些事儿之从内核角度看IO模型中我们花了大量的篇幅来从内核角度详细讲述了五种IO模型的演进过程以及ReactorIO线程模型的底层基石IO多路复用技术在内核中的实现原理。 最后我们引出了netty中使用的主从…

代码随想录刷题day52 300.最长递增子序列;674. 最长连续递增序列;718. 最长重复子数组

代码随想录刷题day52 300.最长递增子序列;674. 最长连续递增序列;718. 最长重复子数组 二维dp的初次应用,关于子序列的一系列问题。 300.最长递增子序列 300. 最长递增子序列 - 力扣(Leetcode) 子序列的一个入门题…

java中set接口、哈希表、哈希值、HashSet、LinkedHashSet、方法的可变参数

set接口: set接口和list接口一样,都是继承于Collection接口,它与Collection接口中的方法基本一致。特点:不允许存储重复元素,元素没有索引。它主要有两个实现类:HashSet(具有哈希表结构&#x…

微服务框架 SpringCloud微服务架构 9 初识 Docker 9.2 Docker 与虚拟机的差别

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构9 初识 Docker9.2 Docker 与虚拟机的差别9.2.1 Docker 与虚拟机9.2.2 总结…

基于Android的二维码识别系统的研究与实现(eclipse开发)

目 录 1 Android系统开发背景与意义 1 1.1 Android系统平台的出现 1 1.2 Android系统的发展 1 1.3 Android系统架构的介绍 1 1.4 Android开放系统 3 1.5 Android系统的特点 3 2 二维码识别系统背景介绍 3 2.1 二维码识别系统背景 3 2.1.1 二维码技术产生的背景 3 2.1.2 二维码分…

图像压缩原理-JPEG

搬来一个基础啊 给自己看~~ 非技术指正勿扰 图像的格式有很多种,比如PNG,JPEG等等,但当我们把一张图用工具变成各种其他格式时,其在计算机文件系统显示的文件大小各不一样,但是当你打开显示时,从视觉角度…

Android进阶之路 - Json解析异常

在App与H5交互时,有一个调原生分享的需求,交互方面没有问题,因为分享需要多值,所以采用json进行传递,在app接收进行解析时遇到了这个解析异常 Value  of type java.lang.String cannot be converted to JS…