JavaScript-3

Web API 基本认知

作用和分类

  • 作用:就是使用 JS 去操作 html 和 浏览器
  • 分类:DOM ( 文档对象模型 )、BOM ( 浏览器对象模型 )

DOM 是什么

  • DOM ( Document Object Model —— 文档对象模型 )
  • 它是用来呈现以及与任意 HTML 或 XML 文档交互的 API
  • 通俗的说,DOM 是浏览器提供的一套专门用来"操作网页内容"的功能

DOM 树

  • 什么是 DOM 树:将HTML文档以树状结构直观表现出来,我们称之为文档树或DOM树

  • 作用:文档树直观的体现了标签与标签之间的关系

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

DOM 对象

Dom 的思想核心:把网页内容当作对象来处理

  • 浏览器根据 html 标签生成的 JS 对象
  • 所有的标签属性都可以在这个对象上面找到
  • 修改这个对象的属性会自动映射到标签身上

document 对象

  • 是 DOM 里面提供的一个对象
  • 用来访问和操作网页内容
  • 网页所有内容都在 document 里面

获取 DOM 对象

  • 方式一:根据 CSS 选择器来获取 DOM 元素(重点)
  • 方式二:其他获取 DOM 元素方法(了解)

方式一

具体内容

  • 成功匹配的所有元素中,取第一个元素
语法:document.querySelector('CSS选择器')返回值:CSS选择器匹配成功的所有元素中的第一个元素,是一个HTMLElement对象
  • 成功匹配的所有元素中,取所有元素
语法:document.querySelectorAll('CSS选择器')返回值:CSS选择器匹配成功的所有元素,是一个装有HTMLElement对象的数组

演示部分

<body><div>111</div><div>222</div><div class="box">aaa</div><div class="box">bbb</div><div class="box">ccc</div><div id="d1">ddd</div><ul><li>li-1</li><li>li-2</li><li>li-3</li></ul><script>const a = document.querySelector('.box')console.log(a);const d = document.querySelector('#d1')console.log(d);const li = document.querySelector('li')console.log(li);const lis = document.querySelectorAll('ul li')console.log(lis);</script>
</body>

方式二

    <script>// 根据id获取一个元素document.getElementById('nav')// 根据'标签名'获取一类元素document.getElementsByTagName('div')// 根据'类名'获取对应元素document.getElementsByClassName('box')</script>

操作元素内容

innerText

<body><div>欢迎光临</div><div class="box">我是Peter</div><div class="top">搜索框</div><script>// 1. 获取元素对象const box = document.querySelector('.box')// 2. 修改文字内容console.log(box.innerText);     // 输出内容:我是Peterbox.innerText = '我是Jack'      // 注意:innerText 只显示纯文本,不解析标签// 例如:box.innerText = '<strong>我是Jack</strong>' 是解析不了标签的</script>
</body>

innerHTML

<body><div>欢迎光临</div><div class="box">我是Peter</div><div class="top">搜索框</div><script>// 1. 获取元素对象const box = document.querySelector('.box')// 2. 修改文字内容box.innerHTML = '<strong>我是Jack</strong>'</script>
</body>

操作元素属性

操作元素的常用属性

<body><img src="./images/img2.png" alt=""><script>// 1. 获取图片对象const img = document.querySelector('img')// 2. 修改图片对象的属性值img.src = './images/img3.png'</script>
</body>

操作元素的样式属性

方式一

  • 通过 style 属性操作 CSS
<body><div class="box"></div><script>// 1. 获取对象const box = document.querySelector('.box')// 2. 修改对象的样式的属性值box.style.width = '300px'box.style.backgroundColor = 'green'</script>
</body>

方式二

  • 操作类名 ( className ) 操作 CSS
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.box {width: 200px;height: 200px;background-color: pink;}.active {margin: 0 auto;width: 300px;height: 300px;background-color: bisque;}.radius {border-radius: 50%;}</style>
</head><body><div class="box"></div><script>// 1. 获取对象const box = document.querySelector('.box')// 2. 通过改'类名'的方式,去修改对象的样式box.className = 'active radius'</script>
</body>

方式三(重点)

  • 通过 classList 操作类控制 CSS

    作用:为了解决 className 容易覆盖以前的类名,我们可以通过 classList方式追加和删除类名

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.box {width: 200px;height: 200px;background-color: pink;}.active {margin: 0 auto;width: 300px;height: 300px;background-color: bisque;}.radius {border-radius: 50%;}</style>
</head><body><div class="box"></div><script>// 1. 获取对象const box = document.querySelector('.box')// 追加一个类box.classList.add('active')// 删除一个类box.classList.remove('active')// 切换一个类// 判断这个类有没有,有就删掉,没有就加上,即:类似'取反'的效果box.classList.toggle('radius')</script>
</body>

操作表单元素属性

标准属性

  • 标签天生自带的属性,比如 class、id、title 等,可以直接使用点语法操作,比如:disabled、checked、selected
<body><input type="text" value="电脑"><script>const ipt = document.querySelector('input')ipt.value = '书包'</script>
</body>
<body><input type="checkbox" name="" id="" checked><script>const ipt = document.querySelector('input')ipt.checked = false</script>
</body>
<body><button disabled>点击</button><script>const btn = document.querySelector('button')btn.disabled = false</script>
</body>

自定义属性(重点)

  • 在 html 5 中推出来了专门的 data-自定义属性
  • 在标签上一律以 data- 开头
  • 在 DOM 对象上一律以 dataset 对象方式获取
<body><div data-id="haha" data-spm="run">第1个</div><div>第2个</div><div>第3个</div><script>const one = document.querySelector('div')console.log(one.dataset.id);    // hahaconsole.log(one.dataset.spm);   // run</script>
</body>

定时器

间歇函数

使用场景

    网页中经常会需要有一种功能:每隔一段时间需要自动执行一段代码,不需要我们手动去触发例如:网页中的倒计时定时器函数可以开启和关闭定时器

开启定时器

	语法:setInterval(函数, 间隔时间)作用:每隔一段时间调用这个函数(间隔时间单位:毫秒)
    <script>// 开启定时器的方式一:setInterval(function () {document.write('匹配成功 <br>')}, 1000)// 开启定时器的方式二:function add() {document.write('任务完成 <br>')}setInterval(add, 2000)	// 开启</script>

关闭定时器

	语法:let 变量名 = setInterval(函数, 间隔时间)clearInterval(变量名)作用:当满足某些条件时,关闭定时器
    <script>let n = setInterval(function () {document.write('匹配成功 <br>')}, 1000)console.log(n)  // 变量里面存的是独一无二的定时器序号,这个序号是为了避免多个定时器互相干涉// 关闭定时器clearInterval(n)</script>

具体案例

<body><textarea name="" id="" cols="30" rows="10">《用户注册协议》您确认所有服务条款并完成注册程序时本协议在您与本网站间成立并发生法律效力同时您成为本网站正式用户</textarea><br><button class="btn" disabled>我已经阅读用户协议 (5s)</button><script>const btn = document.querySelector('.btn')let second = 5   // 倒计时秒数let n = setInterval(function () {second--btn.innerHTML = `我已经阅读用户协议 (${second}s)`if (second === 0) {clearInterval(n)btn.innerHTML = `我同意该协议`btn.disabled = false}}, 1000)</script>
</body>

延时函数

基本认识

JavaScript 内置的一个用来让代码延迟执行的函数,叫 setTimeout

语法:1.设置延时函数setTimeout(回调函数, 等待的毫秒数)2.清除延时函数let timer = setTimeout(回调函数, 等待的毫秒数)clearTimeout(timer)

具体演示

<body><script>let timer = setTimeout(function () {alert("时间到了")}, 2000)</script>
</body>

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

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

相关文章

配置zabbix监控平台

目录 内容纯手敲&#xff0c;难免有误&#xff0c;若发现请私信我。 配置zabbix监控平台 一、进入官网 ​编辑​ 二、配置zabbix-server&#xff08;服务端&#xff09; 1.下载zabbix的yum源 2.安装Zabbix服务器、前端、代理 3.安装Zabbix前端 4.编辑文件/etc/yum.rep…

rabbitmq基础教程(ui,java,springamqp)

概述&#xff1a;安装看我上篇文章Docker安装rabbitmq-CSDN博客 任务一 创建一个队列 这样创建两个队列 在amq.fanout交换机里面发送数据 模拟发送数据 发送消息&#xff0c;发现一下信息&#xff1a; 所以得出理论&#xff0c;消息发送是先到交换机&#xff0c;然后由交换机…

Docker网络配置网络模式

前言 Docker 的网络模式是一种定义容器如何在网络中通信的方式。Docker 提供了多种网络模式&#xff0c;每种模式都适用于不同的使用场景 一.网络相关概念 1.子网掩码 互联网是由许多小型网络构成的&#xff0c;每个网络上都有许多主机&#xff0c;这样便构成了一个有层次的结…

http跟https有什么区别?

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;和HTTPS&#xff08;HTTP Secure&#xff09;是两种不同的通信协议&#xff0c;它们在数据传输的安全性方面有明显的区别&#xff1a; 1. 安全性&#xff1a; - HTTP&#xff1a;是一种明文传输协议&#xff0c;数…

【java八股文】之Spring系列篇

【java八股文】之JVM基础篇-CSDN博客 【java八股文】之MYSQL基础篇-CSDN博客 【java八股文】之Redis基础篇-CSDN博客 【java八股文】之Spring系列篇-CSDN博客 【java八股文】之分布式系列篇-CSDN博客 【java八股文】之多线程篇-CSDN博客 【java八股文】之JVM基础篇-CSDN博…

数据分析-Pandas如何整合多张数据表

数据分析-Pandas如何整合多张数据表 数据表&#xff0c;时间序列数据在数据分析建模中很常见&#xff0c;例如天气预报&#xff0c;空气状态监测&#xff0c;股票交易等金融场景。数据分析过程中重新调整&#xff0c;重塑数据表是很重要的技巧&#xff0c;此处选择Titanic数据…

网络安全的威胁PPT

建议的PPT免费模板网站&#xff1a;http://www.51pptmoban.com/ppt/ 此PPT模板下载地址&#xff1a;https://file.51pptmoban.com/d/file/2023/03/20/1ae84aa8a9b666d2103f19be20249b38.zip 内容截图&#xff1a;

SpringBoot教程(十七) | SpringBoot中ApplicationEvent用法

SpringBoot教程(十七) | SpringBoot中ApplicationEvent用法 对不起大家&#xff0c;昨天文章里的告别说早了&#xff0c;这个系列还不能就这么结束。 我们前面的文章中讲解过RabbitMQ的用法&#xff0c;所谓MQ就是一种发布订阅模式的消息模型。在Spring中其实本身也为我们提供…

Spark---累加器和广播变量

文章目录 1.累加器实现原理2.自定义累加器3.广播变量 1.累加器实现原理 累加器用来把 Executor 端变量信息聚合到 Driver 端。在 Driver 程序中定义的变量&#xff0c;在Executor 端的每个 Task 都会得到这个变量的一份新的副本&#xff0c;每个 task 更新这些副本的值后&…

OpenCV-19图像的仿射变换

放射变换是图像旋转&#xff0c;缩放&#xff0c;平移的总称&#xff0c;具体的做法是通过一个矩阵和原图片坐标进行计算&#xff0c;得到新的坐标&#xff0c;完成变换&#xff0c;所以关键就是这个矩阵。 一、仿射变换之图像平移 使用API------warpAffine&#xff08;src &…

微信小程序上传并显示图片

实现效果&#xff1a; 上传前显示&#xff1a; 点击后可上传&#xff0c;上传后显示&#xff1a; 源代码&#xff1a; .wxml <view class"{{company_logo_src?blank-area:}}" style"position:absolute;top:30rpx;right:30rpx;height:100rpx;width:100rp…

C++(1) —— 基础语法入门

目录 一、C初识 1.1 第一个C程序 1.2 注释 1.3 变量 1.4 常量 1.5 关键字 1.6 标识符命名规则 二、数据类型 2.1 整型 2.2 sizeof 关键字 2.3 实型&#xff08;浮点型&#xff09; 2.4 字符型 2.5 转义字符 2.6 字符串型 2.7 布尔类型 bool 2.8 数据的输入 三…

idea使用docker-compose发布应用程序

非常重要的话说在前头 idea要想使用docker-compose&#xff0c;不能使用ssh创建idea Docker&#xff0c;而需要使用socket创建idea Docker。 socket docker是不安全的&#xff0c;任何人都可以访问你的docker&#xff0c;所以只能测试环境使用&#xff0c;请勿在正式环境使用s…

ubuntu设置每天定时关机

ubuntu设置每天定时关机 终端输入命令&#xff1a; sudo crontab -e输入密码&#xff0c;回车。 我这里使用nano作为编辑器&#xff0c;你可以选择vim。 在末尾输入以下命令&#xff1a; 59 23 * * * sudo -u root shutdown now设置&#xff1a;每天23:59分&#xff0c;电脑…

pyqtgraph绘图类

pyqtgraph绘图类 pyqtgraph绘图有四种方法: 方法描述pyqtgraph.plot()创建一个新的QWindow用来绘制数据PlotWidget.plot()在已存在的QWidget上绘制数据PlotItem.plot()在已存在的QWidget上绘制数据GraphicsLayout.addPlot()在网格布局中添加一个绘图 上面四个方法都接收同样…

Floyd - Warshall算法

顶点 public class Vertex {String name;List<Edge> edges;// 拓扑排序相关int inDegree;int status; // 状态 0-未访问 1-访问中 2-访问过&#xff0c;用在拓扑排序 ​// dfs, bfs 相关boolean visited;//是否被访问过 ​// 求解最短距离相关private static final int …

利用低代码技术,企业怎样开拓数字化转型新路径?

近年来&#xff0c;随着技术的发展和市场竞争的加剧&#xff0c;企业数字化转型已成为一种趋势。许多企业已经完成了线上协作办公的初步转型&#xff0c;这主要得益于像钉钉、企微等发展完善的平台&#xff0c;只需将员工全部拉入这些平台&#xff0c;就能实现线上协作办公。 然…

2024年甘肃省职业院校技能大赛信息安全管理与评估 样题一 模块二

竞赛需要完成三个阶段的任务&#xff0c;分别完成三个模块&#xff0c;总分共计 1000分。三个模块内容和分值分别是&#xff1a; 1.第一阶段&#xff1a;模块一 网络平台搭建与设备安全防护&#xff08;180 分钟&#xff0c;300 分&#xff09;。 2.第二阶段&#xff1a;模块二…

muduo网络库剖析——通道Channel类

muduo网络库剖析——通道Channel类 前情从muduo到my_muduo 概要事件种类channel 框架与细节成员函数细节实现使用方法 源码结尾 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库&#xff0c;考虑的肯定是众多情况是否可以高效满足&#xff1b;而作为学习者&#x…

Linux学习记录——사십삼 高级IO(4)--- Epoll型服务器(1)

文章目录 1、理解Epoll和对应接口2、简单实现 1、理解Epoll和对应接口 poll依然需要OS去遍历所有fd。一个进程去多个特定的文件中等待&#xff0c;只要有一个就绪&#xff0c;就使用select/poll系统调用&#xff0c;让操作系统把所有文件遍历一遍&#xff0c;哪些就绪就加上哪…