JavaEE——简单认识JS(Web API)

文章目录

  • 一、认识什么是 WebAPI
  • 二、认识事件
  • 三、操作元素
    • 1. innerHTML 属性
    • 2. 获取 / 修改元素内容
    • 3. 获取 / 修改 元素属性
    • 4. 获取 / 修改 表单元素属性
    • 5. 获取 / 修改 样式属性
    • 6. 创建 / 删除元素

一、认识什么是 WebAPI

1.什么是API

在我们了解 WebAPI 之前,我们要先知道什么是 API 。
所谓 API 本质上就是一些现成的函数 / 对象,让程序员直接拿来使用,方便开发。

2. WebAPI

JS 的学习大致分为下面的三大部分:

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

在上一篇文章中,我主要向大家介绍的是ECMAScript: 基础语法部分。而这里的 WebAPI 则包含了 DOM + BOM 这两点。

二、认识事件

1.事件的基本概念

所谓事件,就是针对用户的操作进行一些响应。
通俗的来讲,用户在浏览器中的动作就是 事件

2.事件的三个要素

1.事件源: 哪一个元素产生的事件。
2.事件类型: 点击、双击、移动。。。
3.事件处理程序: 事件发生以后,需要执行那些代码。(这些代码都是事先设定好的)

针对上面的要素,这里用一段简单的 JS 代码来进行解释。

<button id="btn">点我一下</button>
<script>var btn = document.getElementById('btn');btn.onclick = function () {alert("hello world");}
</script>

这个代码还是比较好理解的,在这里就不进行运行展示了。

btn: 这个按钮就是事件源。
点击: 事件类型。
function: 这个匿名函数就是事件的处理程序。
btn.onclick = function () 这个操作就称为 注册 / 绑定事件

三、操作元素

1. innerHTML 属性

使用 innerHTML 属性就可以拿到 HTML语法 所表示的元素中的内容。
当修改其中的元素时,就会影响到界面的显示。

2. 获取 / 修改元素内容

代码示例

    <div class="one">点击一下</div><script>let div = document.querySelector('.one');div.onclick = function(){//读取到页面的内容console.log(div.innerHTML);//这里实现的是每次点击后再文段后加上一个 adiv.innerHTML += 'a';}   </script>

运行结果
在这里插入图片描述
在这里插入图片描述
通过上述代码,我们就可以发现,innerHTML 属性可以抓取到当前所选中的标签中的内容(也就是 开始标签 和 结束标签 之间夹着的部分) 并可以对其进行修改。

3. 获取 / 修改 元素属性

html 标签的属性,也会映射到 js 的对象中。

代码示例

<img src="fengjing.jpg" alt="这是一张风景图" title="风景图"><script>let img = document.querySelector('img');img.onclick = function(){console.log(img.src);console.log(img.title);console.log(img.alt);img.src = 'touxiang.png';}</script>

运行结果
在这里插入图片描述
点击之后
在这里插入图片描述
在这里 JS 代码就修改了 img 标签中的 src 属性。

4. 获取 / 修改 表单元素属性

  1. 修改 input 中的值

表单元素 (例如:input、textarea、select…) 在这些元素中,有着一些特别的属性,是普通标签没有的。

代码示例

    <input type="text"><button>点我一下</button><script>let input = document.querySelector('input');let button = document.querySelector('button');button.onclick = function(){//获取 input 中的 value 属性 console.log(input.value);//抓取 input 中的信息//这里出现的情况会是一个空白。。console.log(input.innerHTML);let value = parseInt(input.value);value += 1;input.value = value;}</script>

运行结果

在这里插入图片描述
在这里插入图片描述

  1. parseInt
    这个关键字的作用是,将当前的元素从字符串的形式转化为数字的形式
  2. 运行结果中的标记
    在运行结果中的空白行,就是 innerHTML 获取到的标签的内容,但是 input 是一个单标签,其中是没有内容的。 所以在这里显示的就是空白。
  1. 修改 input 中的 type 属性

这里的 type 属性有两种显示情况,一种为文本显示,一种是以密码的形式显示。

代码示例

    <input type="text"><button>点我一下</button><script>let input = document.querySelector('input');let button = document.querySelector('button');button.onclick = function(){if(input.type == 'text'){input.type = 'password';//修改 button 标签中的文字button.innerHTML = '显示密码';}else{input.type = 'text';button.innerHTML = '隐藏密码';}}</script>

运行结果
在这里插入图片描述
在这里插入图片描述

5. 获取 / 修改 样式属性

  1. 修改内联样式

这里我们修改的是 style 属性的值。

代码示例

<div style="font-size: 20px;">这是一个div点击之后会放大</div>
<script>let div = document.querySelector('div');//先获取当前的字体大小console.log(div.style.fontSize)div.onclick = function(){//先获取到当前的字体大小//将当前的像素转换成 int 类型便于相加let = fontSize = parseInt(div.style.fontSize);fontSize += 10;//设置字体还需要加上 px 这个单位div.style.fontSize = fontSize + 'px';console.log(div.style.fontSize);            }
</script>

运行结果
在这里插入图片描述
在上述代码中,每次点击都会将文字放大 10px.

  1. 修改元素应用的 CSS 类名

这里简单实现一个 夜间模式 的切换。

代码示例

    <div id="one" class="light" style="font-size: 20px; height: 500px;">这是一个 div 点击之后变化</div><style>.light{/* 日间模式 */color:rgb(54, 53, 53);background-color: #fff;}.dark{/* 夜间模式 */color: white;background-color: rgb(54, 53, 53);}</style><script>//获取当前 id 为 one 的这个 divlet div = document.querySelector('#one');div.onclick = function(){// 点击div切换模式if(div.className == 'dark'){div.className = 'light';}else{div.className = 'dark';}}</script>

运行结果
在这里插入图片描述
在这里插入图片描述

6. 创建 / 删除元素

  1. 创建元素

要实现创建元素,需要有下面的两步操作:
首先,创建出一个元素。
然后,将这个元素放进 dom 树中。

代码示例

	<!-- 这里先创建出一个标签 --><ul><li>11</li><li>22</li></ul><script>//此处先选中要修改的标签名称let ul = document.querySelector('ul');//添加多个 li 标签for(let n = 3; n < 10;n++){let li = document.createElement('li');li.innerHTML = n+ '' +n;//将元素添加到末尾ul.appendChild(li);}</script>

运行结果
在这里插入图片描述

简单解释上面元素创建的过程
观察上面的代码,可以将创建大致分为三部分:

  1. 首先,使用 document.querySelector 选中要修改的元素
  2. 第二,使用 document.createElement 来创建其中想要创建的内容。
  3. 第三,使用 appendChild 将元素添加到子元素的末尾。(当然,这里还可以使用 insertBefore 关键字,将元素插入到想插入的位置)

insertBefore 的使用语法
insertBefore (新建的元素名称,选中的标签名称.children[这里和数组类似,填对应的数字])
ul.insertBefore(li,ul.children[1]);(上面代码的修改)

  1. 删除元素
    <ul><li>11</li><li>22</li></ul><script>//此处先选中要修改的标签名称let ul = document.querySelector('ul');//添加多个 li 标签for(let n = 3; n < 10;n++){let li = document.createElement('li');li.innerHTML = n+ '' +n;//将元素添加到末尾ul.appendChild(li);//删除元素//在 li 标签下的全部元素中,选出下标为 2 的元素let todelete = document.querySelectorAll('li')[2];console.log(todelete);//移除选中的元素ul.removeChild(todelete);}</script>

运行结果
在这里插入图片描述

删除元素比较简单,使用的关键字为 removeChild

到此,与 WebAPI 有关的简单知识就已经介绍的差不多了。在下一篇文章中,本人会以两个简单的案例来总和使用这里的操作。

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

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

相关文章

MYSQL使用mysqldump备份、复原数据库

参考 添加链接描述 1. 备份数据库 C:\Windows\system32>mysqldump -uroot -p test student>C:\student.sql Enter password: ****2. 备份多个数据库 mysqldump -u root -p --databases test mysql>C:\testandmysql.sql3. 备份所有数据库 mysqldump -u root -p -…

【Python】外网远程登录访问jupyter notebook+pycharm使用ipython

第一步&#xff1a;创建python虚拟环境 conda create -n py3610 python3.6.10第二步&#xff1a;安装ipython pip install ipython pip install ipython notebook第三步&#xff1a;创建 IPython Notebook 服务器配置文件 # 进入python交互shell&#xff0c;设置密码 >&…

数论<1>——数论基础

这期博客是一个数论入门介绍&#xff0c;dalao们可以自动忽略。 Part 1:素数(质数) 说到数论&#xff0c;小学奥数里也有。我最先想到的就是质数了。素数就是一个只能被1和它自己整除的数。判断的方法也很简单&#xff0c;可以扫一遍就结束了&#xff0c;但是没必要。由于一个…

Hudi入门

一、Hudi编译安装 1.下载 https://archive.apache.org/dist/hudi/0.9.0/hudi-0.9.0.src.tgz2.maven编译 mvn clean install -DskipTests -Dscala2.12 -Dspark33.配置spark与hudi依赖包 [rootmaster hudi-spark-jars]# ll total 37876 -rw-r--r-- 1 root root 38615211 Oct …

【NR 定位】3GPP NR Positioning 5G定位标准解读(十一)-增强的小区ID定位

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

QT中使用QProcess执行命令,实时获取数据,例如进度条

前言 因为之前写了一个接收和发送文件的脚本&#xff0c;然后又需要获取进度&#xff0c;同步到进度条中。 效果&#xff1a; 使用正则匹配&#xff0c;获取命令行命令中的以下数据&#xff0c;然后同步到进度条 源码demo&#xff1a; 非完整代码&#xff1a; #include <Q…

nodejs web服务器 -- 搭建开发环境

一、配置目录结构 1、使用npm生成package.json&#xff0c;我创建了一个nodejs_network 文件夹&#xff0c;cd到这个文件夹下&#xff0c;执行&#xff1a; npm init -y 其中-y的含义是yes的意思&#xff0c;在init的时候省去了敲回车的步骤&#xff0c;如此就生成了默认的pac…

山泉还可以申请商标不,现阶段通过率如何!

在32类类别啤酒饮料是许多生产水企业主要申请注册的类别&#xff0c;那现在山泉在这个类别还可以申请注册商标不&#xff0c;山泉在这个类别基本上是通用词&#xff0c;首先是需要前面词具有显著性&#xff0c;没的相同或近似才可以。 经普推知产老杨检索发现&#xff0c;在32…

手机APP测试——如何进行安装、卸载、运行?

手机APP测试——主要针对的是安卓( Android )和苹果IOS两大主流操作系统,主要考虑的就是功能性、兼容性、稳定性、易用性、性能等测试&#xff0c;今天先来讲讲如何进行安装、卸载、运行的内容。 一、App安装 1、点击运行APP安装包,检测安装包是否正常; . 2、进入[安装向导]…

自动驾驶感知面试-coding应用题

感知面试手撕代码&#xff1a;这个博主总结的很好&#xff0c;尤其是关于叉积的计算 双线性插值 双线性插值公式记忆方法和Python实现 NMS算法 #include<iostream> #include<vector> #include<algorithm>using namespace std; struct Box {int x1,x2,y1,…

Pytorch学习 day09(简单神经网络模型的搭建)

简单神经网络模型的搭建 针对CIFAR 10数据集的神经网络模型结构如下图&#xff1a; 由于上图的结构没有给出具体的padding、stride的值&#xff0c;所以我们需要根据以下公式&#xff0c;手动推算&#xff1a; 注意&#xff1a;当stride太大时&#xff0c;padding也会变得很大…

【NR 定位】3GPP NR Positioning 5G定位标准解读(九)-增强的小区ID定位

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

基于springboot+vue的食品安全管理系统(源码+论文)

目录 前言 一、功能设计 二、功能实现 1 首页 2 后台登录 3 食品信息添加页面 4 食品查询 三、库表设计 四、论文 前言 从事食品行业的商家可能会对于食品的储存以及食品的销售&#xff0c;都有着不同门道的想法&#xff0c;那么如何能将这些想法一一实现&#xff0c;…

大模型笔记:幻觉 hallucination

1 介绍 “幻觉” (Hallucination)&#xff0c;指模型生成自然流畅&#xff0c;语法正确但实际上毫无意义且包含虚假信息即事实错误的文本&#xff0c;以假乱真&#xff0c;就像人产生的幻觉一样。 举个例子就是&#xff0c;即使现在的chatgpt-4&#xff0c;你问他一些有确切…

计算机网络 八股

计算机网络体系结构 OSI&#xff1a;物理层、数据链路层、网络层、运输层、会话层、表示层、应用层

【FFmpeg】ffmpeg 命令行参数 ⑤ ( 使用 ffmpeg 命令提取 音视频 数据 | 保留封装格式 | 保留编码格式 | 重新编码 )

文章目录 一、使用 ffmpeg 命令提取 音视频 数据1、提取音频数据 - 保留封装格式2、提取视频数据 - 保留封装格式3、提取视频数据 - 保留编码格式4、提取视频数据 - 重新编码5、提取音频数据 - 保留编码格式6、提取音频数据 - 重新编码 一、使用 ffmpeg 命令提取 音视频 数据 1…

如何批量加密U盘?U盘如何批量设置密码?

但U盘数量较多时&#xff0c;加密U盘的工作就会非常麻烦。这时你需要使用U盘批量加密工具。那么&#xff0c;如何批量加密U盘&#xff1f; 批量加密U盘 想要实现U盘批量加密&#xff0c;我们需要使用专业的U盘批量加密工具&#xff0c;如U盘内存卡批量只读加密专家。它支持批量…

RabbitMQ发布确认高级版

1.前言 在生产环境中由于一些不明原因&#xff0c;导致 RabbitMQ 重启&#xff0c;在 RabbitMQ 重启期间生产者消息投递失败&#xff0c; 导致消息丢失&#xff0c;需要手动处理和恢复。于是&#xff0c;我们开始思考&#xff0c;如何才能进行 RabbitMQ 的消息可靠投递呢&…

代码随想录训练营第41天 | 动态规划:01背包理论基础、动态规划:01背包理论基础(滚动数组)、LeetCode 416.分割等和子集

动态规划&#xff1a;01背包理论基础 文章讲解&#xff1a;代码随想录(programmercarl.com) 视频讲解&#xff1a;带你学透0-1背包问题&#xff01;_哔哩哔哩_bilibili 动态规划&#xff1a;01背包理论基础&#xff08;滚动数组&#xff09; 文章讲解&#xff1a;代码随想录(…

Cocos Creator 2d光照

godot游戏引擎是有2d光照的&#xff0c;用起来感觉还是很强大的&#xff0c;不知道他是怎么搞的&#xff0c;有时间看看他们怎么实现的。 之前一直以为cocos社区里面没有2d光照的实现&#xff0c;偶然看到2d实现的具体逻辑&#xff0c;现在整理如下&#xff0c; 一&#xff1…