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);
            //这里实现的是每次点击后再文段后加上一个 a
            div.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 的这个 div
        let 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 有关的简单知识就已经介绍的差不多了。在下一篇文章中,本人会以两个简单的案例来总和使用这里的操作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

苍穹外卖学习-----2024/03/09

1.菜品分页查询 代码在这里 分页查询菜品 2.删除菜品 [链接]param 1、概览 本文将带你了解 Spring 中 RequestParam 注解的用法。 简单地说&#xff0c;可以使用 RequestParam 从请求中提取查询参数、表单参数甚至是多个参数。 2、示例端点 假设我们有一个端点 /api/foos&a…

二叉树遍历(前中后序的递归/非递归遍历、层序遍历)

二叉树的遍历 1. 二叉树的前序、中序、后序遍历 前、中、后序遍历又叫深度优先遍历 注&#xff1a;严格来说&#xff0c;深度优先遍历是先访问当前节点再继续递归访问&#xff0c;因此&#xff0c;只有前序遍历是严格意义上的深度优先遍历 首先需要知道下面几点&#xff1a; …

Spring学习 基础(三)MVC

5、Spring MVC 传统Web模式&#xff1a; Model:系统涉及的数据&#xff0c;也就是 dao 和 bean。View&#xff1a;展示模型中的数据&#xff0c;只是用来展示。Controller&#xff1a;处理用户请求都发送给 &#xff0c;返回数据给 JSP 并展示给用户。 随着 Spring 轻量级开发…

Vue项目实战-空间论坛(2)

项目实战 实现userlist页面 获取userlist列表&#xff0c;可使用ajax,axios 实现 这里采用ajax实现&#xff0c;需要添加Jquery依赖&#xff0c;然后在UserListView.vue中引入 在UserListView.vue组件的入口函数中定义users变量&#xff0c;并引入ref 使用ajax从云端动…

目标检测——监控下打架检测数据集

一、简述 首先&#xff0c;监控下打架检测是维护公共安全的重要手段。在公共场所、学校、监狱等地方&#xff0c;打架事件往往难以避免。通过安装打架检测监控系统&#xff0c;可以实时监控并准确识别打架事件&#xff0c;及时采取必要的应对措施&#xff0c;有效地减少打架事…

手写分布式配置中心(五)整合springboot(不自动刷新的)

springboot中使用配置方式有四种&#xff0c;分别是environment、BeanDefinition、Value、ConfigurationProperties。具体的原理可以看我之前的一篇文章https://blog.csdn.net/cjc000/article/details/132800290。代码在https://gitee.com/summer-cat001/config-center 原理 …

PTA L2-004 这是二叉搜索树吗?

一棵二叉搜索树可被递归地定义为具有下列性质的二叉树&#xff1a;对于任一结点&#xff0c; 其左子树中所有结点的键值小于该结点的键值&#xff1b;其右子树中所有结点的键值大于等于该结点的键值&#xff1b;其左右子树都是二叉搜索树。 所谓二叉搜索树的“镜像”&#xf…

减少PDF文件大小的方法,亲测巨好用!!!

周六晚上&#xff0c;导师突然发了两个pdf&#xff0c;让把大小改成1M以下&#xff01;&#xff01;&#xff01; 试了很多方法最后&#xff0c;发现了个最好使用的&#xff0c;不过需要下载下Adobe Acrobat文件编辑软件&#xff0c;下载地址如下 链接&#xff1a;https://pan.…

基于Java的开放实验室管理系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实验管理模块2.4 实验设备模块2.5 实验订单模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示五、样例代码5.1 查询实验室设备5.2 实验放号5.3 实验预定 六、免责说明 一、摘…

LVS+Keepalived 高可用集群

一、Keepalived工具介绍 支持故障自动切换(Failover) 支持节点健康状态检查(Health Checking) 基于vrrp协议完成地址流动 为vip地址所在的节点生成ipvs规则(在配置文件中预先定义) 为ipvs集群的各RS做健康状态检测 基于脚本调用接口完成脚本中定义的功能&#xff0c;进而…

链表|19.删除链表的倒数第N个节点

力扣题目链接 struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {//定义虚拟头节点dummy 并初始化使其指向headstruct ListNode* dummy malloc(sizeof(struct ListNode));dummy->val 0;dummy->next head;//定义 fast slow 双指针struct ListNode* f…

springboot整合shiro的实战教程(一)

文章目录 1.权限的管理1.1 什么是权限管理1.2 什么是身份认证1.3 什么是授权 2.什么是shiro3.shiro的核心架构3.1 Subject3.2 SecurityManager3.3 Authenticator3.4 Authorizer3.5 Realm3.6 SessionManager3.7 SessionDAO3.8 CacheManager3.9 Cryptography 4. shiro中的认证4.1…

Cocos Creator 2d光照

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

CAS 登出方案

1.配置 CAS 服务器端 添加配置cas.logout.followServiceRedirects:true&#xff0c;使支持 CAS 退出时支持输入 service 参数为跳转路径 2.配置客户端服务,添加session清除操作 3.前端文件添加跳转重定向 1) 直接在客户端调用http请求/cas/logout去注销不能携带cookie信息, 无…

Jmeter 性能 —— 模拟百万高并发压测思路!

测试场景&#xff1a;模拟百万级的订单量一个物流信息的查询接口。 条件&#xff1a;接口响应时间<150ms以内。10万并发量每秒。 设计性能测试方案&#xff1a; 1、生产环境 10W/S --并发量&#xff08;架构师/技术负责人提供&#xff09;20台机器&#xff08;4G*4核配置…

【探索C++容器:set和map的使用】

[本节目标] 1. 关联式容器 2. 键值对 3. 树形结构的关联式容器 1. 关联式容器 在初阶阶段&#xff0c;我们已经接触过STL中的部分容器&#xff0c;比如&#xff1a;vector、list、deque、forward_list(C11)等&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为…

第三百八十九回

文章目录 1. 概念介绍2. 使用方法2.1 获取所有时区2.2 转换时区时间 3. 示例代码4. 内容总结 我们在上一章回中介绍了"分享一些好的Flutter站点"相关的内容&#xff0c;本章回中将介绍timezone包.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在…

qsort函数的用法及参数的讲解

第一种用法展示&#xff1a;&#xff08;整形数组的qsort&#xff09; 一&#xff0c;qsort函数的定义&#xff1a; qsort 函数的定义&#xff1a;void qsort (void* base, size_t num, size_t size, int (*compar)(const void*,const void*)); 使用其需要包含头文件&#x…

Echarts 报提示 There is a chart instance already initialized on the dom.

问题原因&#xff1a; 每次执行 Echarts图例方法都会拿到相关的dom元素执行Echarts图例初始化操作 但是每次执行的时候拿到的dom元素又是相同的&#xff0c;Echarts初始化执行的时候检查到这个dom上面已经有了一个 图表了 就不会再重新拿到这个dom元素执行初始化操作 解决方案&…

CSRF攻击解析:原理、防御与应对策略

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…