【前端】Web API

1.Web API 简介

JS分为三大部分:

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

Web API包含 DOM + BOM

2.DOM基本概念

DOM全称 Document Object Model

重要概念:

  • 文档:一个页面就是一个文档,使用document表示
  • 元素:页面中所有的标签都称为元素,使用element表示
  • 节点:网页中所有的内容都可以称为节点(标签节点,注释节点,文本节点,属性节点),使       用node表示

3.获取元素

querySelector & querySelectorAll

<body><div class="box1">box1</div><div class="box2">box2</div><h3><span><input type="text"></span></h3>
</body>
<script>console.log(document.querySelector('.box1')) //获取box1console.log(document.querySelector('h3').querySelector('span')) //获取span中的内容console.log(document.querySelector('h3').querySelector('span').querySelector('input')) //获取input中的内容console.log(document.querySelectorAll('div')) //获取两个div中的内容
</script>

4.事件

三要素:

  • 事件源:哪个元素触发的
  • 事件类型:点击 / 选中 / 修改
  • 事件处理程序:进一步如何处理(往往是一个回调函数)

4.1点击事件

<script>//事件源let button = document.querySelector('input')//绑定事件类型button.onclick = function(){ //点击事件//设定事件处理程序alert('hello')}
</script>

4.2键盘事件

1> onkeydown

不区分大小写

<body><input type="text">
</body>
<script>//事件源let input = document.querySelector('input')//绑定事件类型input.onkeydown = function(event) {//设定事件处理程序console.log("键盘正在按下")let a = event.keyCode;console.log(a)let b = String.fromCharCode(a)console.log(b)}
</script>

2> onkeypress

类似onkeydown,但是区分大小写

3> onkeyup

<body><input type="text" onkeyup="myOnkeyUp">
</body>
<script>//事件源let input = document.querySelector('input')//绑定事件类型function myOnkeyUp() {//设定事件处理程序console.log("按键被抬起")}
</script>

注意:并不是所有按键都可用上述三个事件表示,还有ctlKey、altKey、shiftKey等

5.获取/修改属性

5.1基本元素

<body><img src="../html/src/休闲.jpg" alt="图片加载失败" title="this is a photo" width="100px" height="100px">
</body>
<script>//获取元素属性let img = document.querySelector('img')console.dir(img)//修改元素属性img.title = "revised title"//绑定事件img.onclick = function() {alert("点击图片")}
</script>

5.2表单元素

1> 音乐播放器

<body> <input class="btn" type="button" value="播放" onclick="onClick()">
</body>
<script>let btn = document.querySelector('.btn')//点击“播放”,变成“暂停”//点击“暂停”,变成“播放”function onClick() {if(btn.value == "播放") {btn.value = "暂停"} else {btn.value = "播放"}}
</script>

2> 计数器

<body><input class="input" type="text" value="0"><input class="add" type="button" value="+1" onclick="Add()"><input class="sub" type="button" value="-1" onclick="Sub()">
</body>
<script>  function Add() {let num = document.querySelector('.input') //获取num.value = parseInt(num.value) + 1  //修改}function Sub() {let num = document.querySelector('.input')num.value = parseInt(num.value) - 1}
</script>

3> 全选按钮

<body><input class="all" type="checkbox" onclick="selectAll()">全选<br><input class="select" type="checkbox">选项一<br><input class="select" type="checkbox">选项二<br><input class="select" type="checkbox">选项三<br><input class="select" type="checkbox">选项四<br>
</body>
<script>let all = document.querySelector('.all')let select = document.querySelectorAll('.select')//所有选项全选,全选按钮选中function selectAll() {for(i = 0; i < select.length; i++) {select[i].checked = all.checked  //改为选中状态}}//有一个选项没选,全选按钮取消for(i = 0; i < select.length; i++) {select[i].onclick = function() {all.checked = isSelectAll(select)}}function isSelectAll(select) {for(i = 0; i < select.length; i++) {if(select[i].checked == false) {return false}}return true}console.dir(all)
</script>

5.3样式属性

1> 行内样式操作

通过style直接在标签上指定样式,优先级很高。这种方式修改只能影响到特定样式,其他内联样式的值不变

//点击文字放大字体

<body><div style="font-size: 10px;" onclick="changeSize()">哈哈哈</div>
</body>
<script>function changeSize() {let elem = document.querySelector('div')console.log(elem.style)//获取属性let size = elem.style.fontSizeconsole.log(typeof(size)) //string//修改属性size = parseInt(elem.style.fontSize) + 10//法一elem.style.fontSize = size + "px"//法二elem.style.cssText = "font-size:" + size + "px"}
</script>

2> 类名样式操作

//开启夜间模式

//style标签在head标签中
<style>//白天模式.light {background-color: aliceblue;color: black;width: 100%;height: 100%;}//夜间模式.dark {background-color: black;color: white;width: 100%;height: 100%;}body,html {width: 200px;height: 200px;}
</style>
<body><div class="light" onclick="changeStyle()">这是一段话<br>这是一段话<br>这是一段话<br>这是一段话<br>这是一段话<br></div>
</body>
<script>function changeStyle() {let elem = document.querySelector('div')//当前样式为白天模式,切换为夜间模式//否则切换为白天模式if(elem.className == "light") {elem.className = "dark"} else {elem.className = "light"}}
</script>

 

6.操作节点

6.1插入节点

  1. 创建元素节点
  2. 使用appendChildinsertBefore把元素节点插入到dom树中

注意:如果针对一个节点插入两次,则只有最后一次生效

<body><div><p class="p1">这是一个p标签</p><p>这是一个p标签</p><p>这是一个p标签</p></div>
</body>
<script>//创建新节点let elem1 = document.createElement('h1')elem1.innerHTML = "插入指定节点后"let elem2 = document.createElement('h2')elem2.innerHTML = "插入指定节点前"//使用appendChild将节点插入到dom树中指定节点后let div = document.querySelector('div')div.appendChild(elem1)//使用insertBefore将节点插入到dom树中指定节点前//如果指定节点为null,则默认插入节点末尾div.insertBefore(elem2,document.querySelector('.p2'))div.insertBefore(elem2,document.querySelector('.p1'))
</script>

 

6.2删除节点

<body><div class="container"><div>1</div><div>2</div><div>3</div><div id="delete">4</div></div>
</body>
<script>let parent = document.querySelector('.container')let child = document.querySelector('#delete')//没有父子关系,删除会报错let elem = parent.removeChild(child) //删除console.dir(elem)//被删除的节点只是从dom树中删除了,仍存在内存中,可随时加入到dom树中parent.appendChild(elem) //加入
</script>

7.代码案例

猜数字,表白墙,待办事项……下篇博客再战~

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

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

相关文章

最短路算法

数据结构、算法总述&#xff1a;数据结构/算法 C/C-CSDN博客 目录 朴素dijkstra算法 堆优化版dijkstra算法 Bellman-Ford算法 spfa 算法&#xff08;队列优化的Bellman-Ford算法&#xff09; spfa判断图中是否存在负环 floyd算法 朴素dijkstra算法 思路&#xff1a; 集合…

React简介

React简介 开发网页&#xff1a;引入react和react-native库。 开发手机端应用&#xff1a;引入react和react-dom库。 特点&#xff1a; 虚拟Dom&#xff08;开发者》react》虚拟Dom》Dom&#xff09;&#xff1b; 声明式&#xff08;结果为导向的编程&#xff0c;自动生成代码…

Linux相关命令(2)

1、W &#xff1a;主要是查看当前登录的用户 在上面这个截图里面呢&#xff0c; 第一列 user &#xff0c;代表登录的用户&#xff0c; 第二列&#xff0c; tty 代表用户登录的终端号&#xff0c;因为在 linux 中并不是只有一个终端的&#xff0c; pts/2 代表是图形界面的第…

长三角科技盛会“2024南京国际人工智能,机器人,自动驾驶展览会”

2024南京国际人工智能,机器人,自动驾驶展览会 2024 Nanjing International Ai, Robotics, Autonomous Driving Expo 时间:2024年11月22-24日 地点:南京国际博览中心 南京&#xff0c;这座历史悠久的文化名城&#xff0c;如今正站在新一轮科技产业变革的前沿&#xff0c;以人工…

uni app 空挡接龙

pc游戏 空挡接龙 还不完整。现在没时间搞了记录在这里&#xff0c;等以后有时间了再继续搞。 <template><view class"page_main"><view class"contentone"><canvas class"canvas_cla" style"z-index: 1;" canva…

【C++】每日一题 452 用最少数量的箭引爆气球

有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一…

院子摄像头的监控

院子摄像头的监控和禁止区域入侵检测相比&#xff0c;多了2个功能&#xff1a;1&#xff09;如果检测到有人入侵&#xff0c;则把截图保存起来&#xff0c;2&#xff09;如果检测到有人入侵&#xff0c;则向数据库插入一条事件数据。 打开checkingfence.py&#xff0c;添加如下…

嵌入式学习-ARM-Day4

嵌入式学习-ARM-Day4 实现三个LED灯亮灭 .text .global _start _start: 使能GPIOE的外设时钟 RCC_MP_AHB4ENSETR的第[4]设置为1即可使能GPIOE时钟 LED1 LDR R0,0X50000A28 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来&#xff0c;保存到R1中 ORR R1,R1,#(0x…

Springboot笔记-03

1.properties配置文件 #配制oerson的值 person.lastname张三 person.age12 person.birth2017/12/12 person.bossfalse person.dog.namedag person.dog.age15 person.maps.k1v1 person.maps.k212 person.listsa,b,c运行结果乱码 因为idea默认是utf-8编码而properties是ascall编…

Bytebase 2.14.1 - 分支 (Branching) 功能支持 Oracle

&#x1f680; 新功能 分支 (Branching) 功能支持 Oracle。为 SQL 编辑器添加了项目选择器。 新增 SQL 审核规范&#xff1a; 禁止混合 DDL、DML 语句。禁止对同一张表进行不同类型的 DML 变更 (UPDATE,INSERT,DELETE)。 &#x1f514; 重大变更 工作空间设置中的「数据访问…

大屏可视化综合展示解决方案

1.系统概述 1.1.需求分析 1.2.重难点分析 1.3.重难点解决措施 2.系统架构设计 2.1.系统架构图 2.2.关键技术 2.3.接口及要求 3.系统功能设计 3.1.功能清单列表 3.2.数据源管理 3.3.数据集管理 3.4.视图管理 3.5.仪表盘管理 3.6.移动端设计 3.1.系统权限设计 3.…

利用Scala与Apache HttpClient实现网络音频流的抓取

概述 在当今数字化时代&#xff0c;网络数据的抓取和处理已成为许多应用程序和服务的重要组成部分。本文将介绍如何利用Scala编程语言结合Apache HttpClient工具库实现网络音频流的抓取。通过本文&#xff0c;读者将学习如何利用强大的Scala语言和Apache HttpClient库来抓取网…

c++基础学习第六天(多态,文件操作,模板)

c基础学习第天&#xff08;多态&#xff0c;文件操作&#xff0c;模板&#xff09; 文章目录 1、多态1.1、多态的基本概念1.2、纯虚函数和抽象类1.3、虚析构和纯虚析构 2、文件操作2.1、文本文件2.1.1、写文件2.1.2、读文件 2.2、二进制文件2.2.1、写文件2.2.2、读文件 C提高编…

Python代码实现Excel表格转HTML文件

Excel工作簿是常用的表格格式&#xff0c;广泛用于组织、分析及展示数据。Excel文件通常需要专门的文档阅览器进行查看。如果我们想要以更兼容的方式展示Excel表格&#xff0c;可以将其转换为HTML格式&#xff0c;使其能够在各种浏览器中直接进行查看。同时&#xff0c;将Excel…

【小白入门篇1】GPT到底是怎样练成?

由于具有代表性的OpenAI公司GPT模型并没有开源&#xff0c;所以本章节是参考一些开源和现有课程&#xff08;李宏毅&#xff09;讲解ChatGPT原理。本章没有涉及到很多数学运算&#xff0c;比较适合小白了解GPT到底是怎么练成。GPT的三个英文字母分别代表Generative(生成式)&…

Git 分布式版本控制系统基本概念和操作命令

目录 Git 基本概念 功能特点 工作流程 操作命令 新建代码库 配置 增删文件 代码提交 分支 标签 查看信息 远程同步 撤销 其他 小结 Git Git 是一个开源的分布式版本控制系统&#xff0c;用于跟踪文件的变更历史。它最初由 Linux Torvalds 设计&#xff0c;用于…

php闭包应用

laravel 路由 bingTo 把路由URL映射到匿名回调函数上&#xff0c;框架会把匿名回调函数绑定到应用对象上&#xff0c;这样在匿名函数中就可以使用$this关键字引用重要的应用对象。Illuminate\Support\Traits\Macroable的__call方法。 自己写一个简单的demo: <?php <?…

Docker-Image

Docker Docker 镜像是什么为什么需要镜像镜像命令总览docker imagesdocker tagdocker pulldocker pushdocker rmidocker savedocker loaddocker image inspectdocker historydocker importdocker image prunedocker build Docker 镜像是什么 Docker image 本质上是一个 read-on…

每周编辑精选|在线运行 Deepmoney 金融大模型、AI 偏好等多个优质数据集上线

目前&#xff0c;AI 领域对金融模型的研究成果大多是基于公共知识进行训练的&#xff0c;但在实际的金融实践中&#xff0c;这些公共知识对于当前市场的可解释性往往严重不足。一个理想的金融大模型应该能够理解新闻或数据事件&#xff0c;并能够即时地从主观和量化两个角度对事…

2024 年 5 个 Linux 开源数字化学习平台

与其他行业一样&#xff0c;教育界多年来一直在经历数字化转型的过程。随着数字化学习平台的建立&#xff0c;目前只要能上网&#xff0c;任何人都可以接受教育。 “e-learning”一词的意思是“数字化学习”&#xff0c;是当今最常用的词之一。 它指的是通常在互联网上进行的培…