JavaScript(WebAPI)

目录

一.WebAPI

二.DOM

1.选中页面元素

2.事件

三.操作元素

获取修改元素内容

获取/修改表单元素属性

value

type

获取/修改样式属性

1.修改内联样式

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

四.操作节点

1.新增元素

2.删除元素

五.小结

六.案例

1.网页版本的猜数字

2.表白墙程序


一.WebAPI

WebAPI都是浏览器给JS代码提供的功能(如果浏览器不同,api的行为也可能存在差异)

WebAPI包含了DOM和BOM

https://developer.mozilla.org/zh-CN/docs/Web/API(参考文档)

二.DOM

DOM:Document Object Model(文档对象模型)

HTML上的每一个标签,都可以映射到JS中的一个对应的对象。通过DOM让JS代码操作页面。

DOM树:

1.选中页面元素

querySelector(CSS选择器)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div class="box">abc</div><div id="id">def</div><h3><span><input type="text"></span></h3><script>let elem1=document.querySelector('.box');// console.log(elem1);console.dir(elem1);let elem2=document.querySelector('#id');console.log(elem2);let elem3=document.querySelector('h3>sapn>input');console.log(elem3);</script>
</body>
</html>

2.事件

事件就是针对用户的操作进行一些响应。要能够和用户交互,就要知道用户干了什么。用户做的一些动作就会在浏览器中产生一些事件(鼠标点击、鼠标双击、鼠标移动、键盘按下),代码就需要针对事件做出一反映。

事件的三个要素:

1.事件源:哪个元素产生的事件。

2.事件类型:点击、双击、移动、键盘按下.....

3.事件处理程序:事件发生之后,要执行哪个代码。(要执行的代码都是提前设定好的)

三.操作元素

获取修改元素内容

先获取到该元素,使用innerHTML属性,就能拿到元素中的内容。修改该属性就会影响到界面的属性。

获取/修改表单元素属性

表单元素(input、textarea、select...)有一些特别的属性,普通标签没有的。

value

input的值

value获取到元素里用户填写的值。

给input里面放个数字,每次点击按钮,让数字加1并显示出来。

注意:value默认情况下是一个string类型。直接加1会变成字符串拼接。

type

input的类型(文本、密码、文件、按钮等)

写一个点击可以查看密码的程序

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><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.innerHTML='显示密码';}else{input.type='text';button.innerHTML='隐藏密码';}}</script>
</body>
</html>

获取/修改样式属性

1.修改内联样式

修改style的值,style里的属性名字和CSS中的一致(脊柱命名换成驼峰命名即可)

例:创建一个div,每次点击,都让里面的字体放大

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div style="font-size: 20px;">这是第一个div,点击之后字体放大</div><script>let div=document.querySelector('div');div.onclick=function(){//先获取到当前的字体大小let fontSize=parseInt(div.style.fontSize);fontSize+=10;//设置字体大小的时候不要忘记了px这个单位div.style.fontSize=fontSize+'px';}</script>
</body>
</html>

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

例:切换夜间模式

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id="one" class="light" style="font-size: 20px; height: 500px;">这是第一个div,点击之后切换模式</div><style>.light{/* 日间模式 */color: black;background-color: white;}.dark{/* 夜间模式 */color: white;background-color: black;}</style><script>let div=document.querySelector('#one')div.onclick=function(){// 点击div,切换到夜间模式if(div.className=='dark'){div.className='light';}else{div.className='dark';}}</script>
</body>
</html>

上述操作都是针对当前页面已有的元素进行展开的,下面是对当前页面原本没有的内容的操作。

四.操作节点

1.新增元素

a)创建一个元素

createElement

b)把这个元素放到dom树中

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div class="one">这是第一个div</div><script>//创建元素let input=document.createElement('input');input.value='hello';let div=document.querySelector('.one');//把子元素添加到这个div的末尾,dom树中div.appendChild(input);</script>
</body>
</html>

例:往无序列表中添加元素,加入到末尾。(appendChild)

补充:insertBefore把元素加到指定子元素的前面(中间位置插入)

2.删除元素

ParentElem.removeChild(childElement)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><ul><li>11</li><li>22</li></ul><script>let ul=document.querySelector('ul');for(let n=3;n<10;n++){let li=document.createElement('li');li.innerHTML=n+''+n;ul.appendChild(li);}//删除33这个元素let toDelete=document.querySelectorAll('li')[2];console.log(toDelete);ul.removeChild(toDelete);</script>
</body>
</html>

五.小结

1.选中元素 querySelector/querySelectorAll

2.事件 onclick

3.修改元素内容innerHTML

4.修改元素属性  元素.属性

5.修改表单属性 元素.value  元素.type

6.元素样式 元素.style.样式名=值  元素.className=css类名

7.创建元素 createElement

8.把元素放到dom树上  appendChild

9.删除元素 removeChild

六.案例

1.网页版本的猜数字

1.生成1-100之间的随机整数

2.让用户来输入一个数字

3.根据输入数字的大小关系,给出一个提示是高了/低了/猜对了

</head>
<body><div>请输入要猜的数字</div><input type="text"><button>提交</button><!-- 使用这个div来显示结果 --><div class="result"></div><script>//1.生成一个随机的整数(1-100)let toGuess=parseInt(100*Math.random())+1;console.log(toGuess);//2.进行猜数字操作let button=document.querySelector('button');let resultDiv=document.querySelector('.result');let input=document.querySelector('input');button.onclick=function(){//3.取出输入框的内容if(input.value==''){//用户啥都没有输入,直接返回return;}let inputNum=parseInt(input.value);//4.比较大小关系if(inputNum<toGuess){//小了resultDiv.innerHTML='低了';}else if(inputNum>toGuess){//高了resultDiv.innerHTML='高了';}else{//猜对了resultDiv.innerHTML='猜对了'}}</script>
</body>
</html>

2.表白墙程序

预期效果

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>表白墙</title>
</head>
<style>/*  *是通配符选择器,是选择页面所有元素 */*{/* 消除浏览器的默认样式 */margin:0;padding: 0;box-sizing: border-box;}.container{width: 600px;/* 最上方设置30像素边距 */margin: 30px auto;}h1{/* 表白墙文字水平居中 */text-align: center;  }p{text-align: center;/* p标签文字颜色浅一点 */color: #666;margin: 20px ;}.row{/* 开启弹性布局 */display: flex;height: 40px;/* 水平方向居中 */justify-content: center;/* 垂直方向居中 */align-items: center;}.row span{width: 80px;}.row input{width: 200px;height: 25px;}.row button{width: 280px;height: 25px;color: white;background-color: orange;/* 去掉边框 */border:none;/* 按钮设置成圆角矩形 */border-radius: 5px;}/* 点击的时候有个反馈 */.row button:active{background-color: grey;}</style>
<body><div class="container"><h1>表白墙</h1><p>输入内容后点击提交,信息会显示到下方表格中</p><div class="row"><span>谁:</span><input type="text"></div><div class="row"><span>对谁:</span><input type="text">  </div><div class="row"><span>说:</span><input type="text"></div><div class="row"><button id="submit">提交</button></div><div class="row"><button id="revert">撤销</button></div></div><script>// 实现提交操作,点击按钮,就可以把用户输入的内容提交到页面上显示//点击的时候,获取到三个输入框的文本内容//创建一个新的div.row,把内容构造到div中let containerDiv=document.querySelector('.container');let inputs=document.querySelectorAll('input');let button=document.querySelector('#submit');button.onclick=function(){// 1.获取到三个输入框的内容let from=inputs[0].value;let to=inputs[1].value;let msg=inputs[2].valueif(from==''||to==''||msg==''){return;}//2.构造新divlet rowDiv=document.createElement('div');rowDiv.className='row message';rowDiv.innerHTML=from+'对'+to+'说:'+msg;containerDiv.appendChild(rowDiv);//3.清空之前的输入内容for(let input of inputs){input.value='';}}let revertButton=document.querySelector('#revert');revertButton.onclick=function(){//删除最后一条消息//选中所有row,找出最后一个row,然后进行删除// 使用message而不是row是因为row会把撤销框也删掉let rows=document.querySelectorAll('.message');if(rows==null||rows.length==0){return;}containerDiv.removeChild(rows[rows.length-1]);}</script></body>
</html>

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

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

相关文章

Python | 为FastAPI后端服务添加API Key认证(分别基于路径传参和header两种方式且swagger文档友好支持)

文章目录 01 前言02 路径传参方式添加API Key2.1 完整代码2.2 请求示例2.3 swagger文档测试 03 请求头Header方式传入API Key&#xff08;推荐&#xff09;3.1 完整代码3.2 请求示例3.3 swagger文档测试 01 前言 FastAPI&#xff0c;如其名所示&#xff0c;是一个极为高效的框…

CSS3有哪些新特性

CSS3 引入了许多新特性&#xff0c;以增强样式设计和页面布局的能力&#xff0c;提供更多的视觉效果和交互性。以下是一些 CSS3 中的新特性&#xff1a; 圆角边框&#xff08;Border Radius&#xff09;&#xff1a;圆角的边框&#xff0c;而不是传统的方形边框。 <!DOCTY…

Java面试被问了几个简单的问题,却回答的不是很好

作者&#xff1a;逍遥Sean 简介&#xff1a;一个主修Java的Web网站\游戏服务器后端开发者 主页&#xff1a;https://blog.csdn.net/Ureliable 觉得博主文章不错的话&#xff0c;可以三连支持一下~ 如有需要我的支持&#xff0c;请私信或评论留言&#xff01; 前言 前几天参加了…

解决0-1背包问题(方案二):一维dp数组(滚动数组)

往期文章&#xff1a;解决0-1背包问题&#xff08;方案一&#xff09;:二维dp数组_呵呵哒(&#xffe3;▽&#xffe3;)"的博客-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/133207350?spm1001.2014.3001.5501 >>探索一维dp数组和二维dp数组的…

深入学习 Redis Cluster - 基于 Docker、DockerCompose 搭建 Redis 集群,处理故障、扩容方案

目录 一、基于 Docker、DockerCompose 搭建 Redis 集群 1.1、前言 1.2、编写 shell 脚本 1.3、执行 shell 脚本&#xff0c;创建集群配置文件 1.4、编写 docker-compose.yml 文件 1.5、启动容器 1.6、构建集群 1.7、使用集群 1.8、如果集群中&#xff0c;有节点挂了&am…

【沐风老师】3DMAX翻转折叠动画插件FoldFx使用方法详解

3DMAX翻转折叠动画插件FoldFx使用方法详解 3DMAX翻转折叠动画插件FoldFx&#xff0c;是3dMax运动图形工具&#xff0c;用于创建多边形折叠动画。用户几乎有无限的可能性&#xff0c;因为动画的每个方面都是可控的。 【适用版本】 适用于3dMax版本&#xff1a;2010及更新版本&a…

让Pegasus天马座开发板实现超声波测距

在完成《让Pegasus天马座开发板用上OLED屏》后&#xff0c;我觉得可以把超声波测距功能也在Pegasus天马座开发板上实现。于是在箱子里找到了&#xff0c;Grove - Ultrasonic Ranger 这一超声波测传感器。 官方地址: https://wiki.seeedstudio.com/Grove-Ultrasonic_Ranger 超声…

OCR -- 文本检测

目标检测&#xff1a; 不仅要解决定位问题&#xff0c;还要解决目标分类问题&#xff0c;给定图像或者视频&#xff0c;找出目标的位置&#xff08;box&#xff09;&#xff0c;并给出目标的类别&#xff1b; 文本检测&#xff1a; 给定输入图像或者视频&#xff0c;找出文本的…

SpringBoot之响应处理

文章目录 前言一、返回值处理器ReturnValueHandler流程关于HttpMessageConverters的初始化ReturnValueHandler与MappingJackson2HttpMessageConverter关联 二、内容协商内容协商原理底层源码 三、自定义MessageConverter总结 前言 包括返回值处理器ReturnValueHandler、内容协…

【Vue.js】使用Element搭建登入注册界面axios中GET请求与POST请求跨域问题

一&#xff0c;ElementUI是什么&#xff1f; Element UI 是一个基于 Vue.js 的桌面端组件库&#xff0c;它提供了一套丰富的 UI 组件&#xff0c;用于构建用户界面。Element UI 的目标是提供简洁、易用、美观的组件&#xff0c;同时保持灵活性和可定制性 二&#xff0c;Element…

套接字socket编程的基础知识点

目录 前言&#xff08;必读&#xff09; 网络字节序 网络中的大小端问题 为什么网络字节序采用的是大端而不是小端&#xff1f; 网络字节序与主机字节序之间的转换 字符串IP和整数IP 整数IP存在的意义 字符串IP和整数IP相互转换的方式 inet_addr函数&#xff08;会自…

相机One Shot标定

1 原理说明 原理部分网上其他文章[1][2]也已经说的比较明白了&#xff0c;这里不再赘述。 2 总体流程 参考论文作者开源的Matlab代码[3]和github上的C代码[4]进行说明&#xff08;不得不说还是Matlab代码更优雅&#xff09; 论文方法总体分两部&#xff0c;第一部是在画面中找…

封装一个高级查询组件

封装一个高级查询组件 背景一&#xff0c;前端相关代码二&#xff0c;后端相关代码三&#xff0c;呈现效果总结 背景 业务有个按照自定义选择组合查询条件&#xff0c;保存下来每次查询的时候使用的需求。查了一下项目里的代码没有现成的组件可以用&#xff0c;于是封装了一个 …

Python实战实例代码-网络爬虫-数据分析-机器学习-图像处理

Python实战实例代码-网络爬虫-数据分析-机器学习-图像处理 Python实战实例代码1. 网络爬虫1.1 爬取网页数据1.2 爬取图片1.3 爬取动态数据&#xff08;使用Selenium&#xff09; 2. 数据分析2.1 数据清洗2.2 数据变换2.3 数据聚合 3. 机器学习3.1 线性回归3.2 随机森林3.3 K-Me…

【数据结构】C++实现哈希表

闭散列哈希表 哈希表的结构 在闭散列的哈希表中&#xff0c;哈希表每个位置除了存储所给数据之外&#xff0c;还应该存储该位置当前的状态&#xff0c;哈希表中每个位置的可能状态如下&#xff1a; EMPTY&#xff08;无数据的空位置&#xff09;。EXIST&#xff08;已存储数…

Linux Day18 TCP_UDP协议及相关知识

一、网络基础概念 1.1 网络 网络是由若干结点和连接这些结点的链路组成&#xff0c;网络中的结点可以是计算机&#xff0c;交换机、 路由器等设备。 1.2 互联网 把多个网络连接起来就构成了互联网。目前最大的互联网就是因特网。 网络设备有&#xff1a;交换机、路由器、…

图层混合算法(一)

常见混合结果展示 图层混合后变暗 正常模式&#xff08;normal&#xff09; 混合色*不透明度&#xff08;100%-混合色不透明度&#xff09; void layerblend_normal(Mat &base,Mat &blend,Mat &dst,float opacity) {if (base.rows ! blend.rows ||base.cols ! b…

测试C#图像文本识别模块Tesseract的基本用法

微信公众号“dotNET跨平台”的文章《c#实现图片文体提取》&#xff08;参考文献3&#xff09;介绍了C#图像文本识别模块Tesseract&#xff0c;后者是tesseract-ocr&#xff08;参考文献2&#xff09; 的C#封装版本&#xff0c;目前版本为5.2&#xff0c;关于Tesseract的详细介绍…

使用Python+Flask/Moco框架/Fiddler搭建简单的接口Mock服务

一、Mock测试 1、介绍 mock&#xff1a;就是对于一些难以构造的对象&#xff0c;使用虚拟的技术来实现测试的过程mock测试&#xff1a;在测试过程中&#xff0c;对于某些不容易构造或者不容易获取的对象&#xff0c;可以用一个虚拟的对象来代替的测试方法接口mock测试&#x…

多维时序 | MATLAB实现WOA-CNN-BiLSTM-Attention多变量时间序列预测(SE注意力机制)

多维时序 | MATLAB实现WOA-CNN-BiLSTM-Attention多变量时间序列预测&#xff08;SE注意力机制&#xff09; 目录 多维时序 | MATLAB实现WOA-CNN-BiLSTM-Attention多变量时间序列预测&#xff08;SE注意力机制&#xff09;预测效果基本描述模型描述程序设计参考资料 预测效果 基…