前端学习笔记 | WebAPIs(DOM+BOM)
一、作用和分类
1、基本概念
作用:使用JS去操作HTML和浏览器
分类:DOM(文档对象模型)和BOM(浏览器对象模型)
html的标签=JS的DOM对象
2、获取DOM对象-参数必须加引号
(1)选择匹配的第一个元素:可直接进行修改
document.querySelector('选择器') //返回DOM对象(2)获取多个:返回伪数组,只能通过遍历的方式修改
document.querySelectorAll('ul li') //返回DOM对象(3)其他
二、操作元素
1、操作元素内容
(1)obj.innerText 仅获取文字
(2)obj.innerHTML 可以解译标签(添加/更改标签)
2、操作元素属性
(1)img.src
(2)img.title
...
3、操作元素样式属性
(1)通过style修改(麻烦)
语法:obj.style.属性值
注:
a.css中带-的采用小驼峰命名法,如background-color→backgroudColor
b.大部分值都是字符串,需要加''",带单位
c.修改body属性可直接使用:document.body.style.属性=' '
(2)通过类名修改(不推荐)
obj.className=' '
缺点:会覆盖原来的类名,需要手动添加原类名
(3)通过classList修改(推荐)
元素.classList.add('类名')
元素.classList.remove('类名')
元素.classList.toggle('类名') 有就删掉,没有就添加
【案例】轮播图
4、操作元素表单属性
表单.value='' 修改表单的值
表单.type='password' 修改成不可见
input.checked=true/false 复选框选中/不选中
button.disabled=true/false 按钮禁用/不禁用
5、自定义属性
在元素标签中内加属性:data-名称
获取自定义属性集合:元素.dataset
获取自定义属性:元素.dataset.名称
6、间歇函数-计时器
(1)开启定时器
方法1:setInterval(函数名-不加小括号,间隔时间-ms) 方法2:setInterval(function(){},间隔实际-ms)(2)关闭定时器
clearInterval(定时器名)
三、事件监听
事件是在编程中系统发生的动作或发生的事件
1、事件语法
元素对象.addEventListener('事件类型',要执行的函数)2、事件监听三要素
事件源:哪个dom元素,要获取dom元素
事件类型:用什么方式触发-点击、鼠标经过...
事件调用的函数:要做什么事
3、事件类型
鼠标事件:click(鼠标点击)、mouseenter(鼠标经过)、mouseleave(鼠标离开)
焦点事件:focus(获得焦点)、blur(失去焦点)
键盘事件:keydown(键盘按下触发)、keyup(键盘抬起触发,推荐)
文本事件:input(用户输入事件)
4、事件对象
是什么:也是个对象,有事件触发时的相关信息
在哪里:事件绑定的回调函数的第一个参数就是事件对象
5、环境对象
目标:能够分析判读函数运行在不同环境中this所指代的对象
定义:指的是函数内部特殊的变量this,它代表着当前函数运行时所处的环境
谁调用,this就是谁
6、回调函数
是什么:函数A作为参数传递给函数B
应用:定时器、监听事件
四、事件流
事件完全执行的流动路径:捕获阶段+冒泡阶段
1、事件捕获
事件被触发,所有元素从祖先开始到子代依次被执行
2、事件冒泡
事件被触发,所有元素从子代开始到祖先依次被执行
3、阻止冒泡
把事件限制在当前元素内,防止冒泡:既能阻止冒泡,也能阻止捕获
事件对象.stopPropagation()4、事件解绑
(1)传统on注册(L0)
btn.οnclick=null
(2)事件监听注册(L2)
使用removeEventLisener(事件,函数名)
匿名函数无法解绑,只能修改成在外部定义的函数
5、鼠标经过事件
mouseover和mouseout会有冒泡效果,不推荐
mouseenter和mouseleave没有冒泡效果,推荐
五、事件委托
1、是什么
减少事件注册次数,利用冒泡的原理:给父元素添加事件-子元素点击-冒泡到父元素
2、方法
(1)获取父元素
(2)注册事件
(3)利用事件对象.target.tagName找到真正触发元素,设置条件:只有点击真正触发元素才能执行函数
3、阻止事件
(1)阻止冒泡
事件对象.stopPropagation()(2)阻止默认行为
事件对象e.preventDefault()
六、其他事件
1、页面加载事件
(1)事件名:load
作用:所有外部资源加载完毕后执行js
window.addEventListener('load'.function(){})(2)事件名:DOMContentLoaded
作用:HTML文档被完全加载和解析完成后,不用等等样式、图像等完全加载
2、元素滚动事件
事件名:scroll
滚动条在滚动时触发事件
window.addEventListener('scroll'.function(){})(1)获取被卷去的大小:
- scrollLeft
- scrollTop
检测方法:
document.documentElement.scrollTop(2)scrollTo,滚动至具体位置
window.scrollTo(x,y)3、页面尺寸事件
窗口改变时触发事件
window.addEventListener('resize'.function(){})clientWidth、clientHeight:获取宽高(不包含border)
七、元素的尺寸与位置
offsetWidth、offsetHeight:获取宽高(内容+padding+border)
offsetLeft、offsetTop:得到的位置优先级(以带有定位的父级>文档左上角)
八、日期对象
日期对象:用于表示时间的对象
作用:获取当前系统时间
1、实例化日期对象
//得到当前时间 const data=new Date()2.转换日期格式
日期对象.toLocaleString() 日期对象.toLocaleTimeString() 仅显示时间 日期对象.toLocaleDateString() 仅显示日期3.时间戳:计算时间的方式—主要用于计算倒计时
三种方式获取时间戳
1、getTime() 必须实例化Date() 2、+new Date() 推荐 +new Date('2022-4-1 18:30:00') 3、Date.now() 仅能返回当前的时间戳
九、节点操作
1、DOM节点
- 元素节点
- 属性节点
- 文本节点
- 其他
2、节点操作(元素节点)
(1)查找节点
通过关系来查找
- 父节点
元素对象.parentNode
- 字节点
元素对象.children
- 兄弟节点
元素对象.previousElementSibling 上一个兄弟元素 元素对象.nextElementSibling 下一个兄弟元素(2)增加节点
步骤1 创建节点
const div = document.createElement('div')步骤2 追加节点
插入到父元素的最后一个子元素
父元素.appendChild(要插入的元素)插入到父元素中某个子元素的前面
父元素.insertBefore(要插入的元素,在哪个元素前面) e.g ul.insertBefore(li,ul.children[0])(3)克隆节点
步骤1 克隆元素
元素对象.cloneNode(true) 参数: true 克隆标签及内容 false 仅可怜标签不克隆内容步骤2 追加元素
元素对象.appendChild(要插入的元素)(4)删除节点
删除元素必须通过父元素删除
父元素.removeChild(父元素.children[0])
十、M端事件(移动端)
1、了解M端常见的事件
- touchstart 手指在DOM元素中触摸
- touchmove 手指在DOM元素中滑动
- touchend 手指在DOM元素中移开
2、swiper插件
(1)引入.css和.js文件
(2)复制demo的HTML内容、CSS内容、JS内容
十一、window对象
1、BOM
2、定时器(延时函数)
只执行一次
setTimeout(回调函数,等待延迟的毫秒数)清除延时函数
let timer=setTimeout(回调函数,等待的毫秒数) clearTimeout(timer)3、JS执行机制
同步任务:都在主线程上执行,形成一个执行栈
异步任务:添加到任务(=消息)队列中
(1)普通事件
(2)资源加载
(3)定时器
事件循环:主线程不停地获取任务→执行任务→再获取任务→执行任务
4、location对象
数据类型:对象
- location.href:获取完整的URL地址,对其赋值时用于地址的跳转
- location.search:获取地址中携带的参数,符号?后面部分
- location.hash:获取地址中的哈希值,符号#后面部分
- reload():刷新页面,强制刷新reload(true)
5、navigator对象
navigator.userAgent:主要用来获取浏览器信息
应用:判断进入pc或者移动端
6、history对象
back():进行后退
forward():前进
go():-1后退,1前进
十二、本地存储
1、本地存储的介绍
存储在本地用户浏览器中,一刷新不丢失数据
2、本地存储的分类
(1)localStorage
本地存储只能存字符串类型
//增-添加数据 localStorage.setItem(key,value) //查-获取数据 localStorage.getItem(key) //删-删除数据:只删除名字 localStorage.removeItem(key) //改-前提,已有改键值 localStorage.setItem(key,value)(2)sessionStorage
生命周期为关闭浏览器窗口,再同一个窗口下数据可共享,用法同localStorage
3、存储复杂数据类型
复杂数据类型必须先转为JSON
localStorage.setItem(key,JSON.stringify(obj))取出来需要再转成对象
JSON.parse(localStorage.getItem('obj'))
十三、数组map和join方法
目的:利用数组的方式实现字符串拼接(高效,开发常用)
1、map
遍历处理的数据,生成新的数组
const arr=['red','blue','pink'] arr.map(function(ele,index){ return ele+'颜色' })2、join
把数组中所有元素转换成一个字符串
arr.join(连接字符串)3、map+join渲染页面
(1)渲染业务要封装成一个函数render
(2)使用map方法遍历数组,里面更换数据,然后会返回有数据的tr数组
(3)通过join方法把map返回的数组转换为字符串
(4)把字符串通过innerHTML赋值给tbody
十四、正则表达式
1、介绍
正则表达式是用于匹配字符串中字符组合的模式。在JS中,正则表达式也是对象。
通常来查找、替换那些符合正则表达式的文本,许多语言都支持正则表达式。
2、作用
- 表单验证(匹配)
- 过滤敏感词(替换)
- 字符串中提取我们想要的部分(提取)
3、语法
(1)定义规则
const reg=/规则词/
(2)查找
reg.test(字符串变量):返回true/false
reg.exec(字符串变量):找到返回数组,找不到返回null
注:也可写成下列
/哈哈/.test('哈哈')4、元字符
是具有特殊含义的字符
[a-z]表示26个字母
(1)边界符
- ^ 开头
- $ 结尾
(2)量词
- * 重复零次或更多次
- + 重复一次或更多次
- ?重复零次或一次
- {n} 重复n次
- {n,} 重复n次或更多次
- {n,m} 重复n到m次
(3)字符类
- [ ] 匹配字符串集合
- [^ ] ^为取反符号
- . 除换行符之外的字符
(4)预定类
5、修饰符
- /表达式/修饰符
- i 不区分大小写 e.g /表达式/i
- g 全局匹配,找出所有满足正则表达式的
- replace
const re=str.replace(/java/ig,'前端')
相关文章:
前端学习笔记 | WebAPIs(DOM+BOM)
一、作用和分类 1、基本概念 作用:使用JS去操作HTML和浏览器 分类:DOM(文档对象模型)和BOM(浏览器对象模型) html的标签JS的DOM对象 2、获取DOM对象-参数必须加引号 (1)选择匹配的第…...
简易内存池(100%用例)C卷(JavaPythonC++Node.jsC语言)
请实现一个简易内存池 , 根据请求命令完成内存分配和释放。 内存池支持两种操作命令,REQUEST和RELEASE,其格式为: REQUEST=请求的内存大小 表示请求分配指定大小内存,如果分配成功,返回分配到的内存首地址;如果内存不足,或指定的大小为 0 ,则输出error。 RELEASE=释放的…...
【算法与数据结构】队列的实现详解
文章目录 📝队列的概念及结构🌠 队列的顺序实现🌉初始化🌠入队🌉出队🌠获取队列首元素🌉获取队列尾部元素🌠获取队列中有效元素个数🌉 队列是否为空🌠查看队列…...
GPT-3后的下一步:大型语言模型的未来方向
摘要: 本文将概述GPT-3后的下一步:大型语言模型的未来方向,包括技术发展趋势、应用场景、挑战与机遇。 引言: GPT-3是OpenAI于2020年发布的一款大型语言模型,它在自然语言处理领域取得了突破性进展。GPT-3的出现标志…...
基于机器学习的曲面拟合方法
随着科技的不断发展,机器学习成为了最近最热门的技术之一,也被广泛应用于各个领域。其中,基于机器学习的曲面拟合方法也备受研究者们的关注。曲面拟合是三维模型处理中的重要技术,其目的是用一组数据点拟合出平滑的曲面࿰…...
【C++从练气到飞升】03---构造函数和析构函数
🎈个人主页:库库的里昂 ✨收录专栏:C从练气到飞升 🎉鸟欲高飞先振翅,人求上进先读书。 目录 ⛳️推荐 一、类的6个默认成员函数 二、构造函数 1. 构造函数的概念 2. 构造函数的定义 3. 构造函数的特性 三、析构函…...
mybatis转义字符
编写SQL中会用到<,>,<,> 等,但是在mybatis中不可以这么写,与xml文件的元素<>冲突,所以需要转义。整理转义字符如下: 符号原始字符转义字符大于>>大于等于>>小于<<小于等于<<和&&a…...
vue3 实现一个tab切换组件
一. 效果图 二. 代码 文件 WqTab.vue: <template><div ref"wqTabs" class"wq-tab"><template v-for"tab in tabs" :key"tab"><div class"tab-item" :class"{ ac: tabActive tab.key }" c…...
JSONObject在Android Main方法中无法实例化问题
目录 前言一、Main(非安卓环境)方法下运行二、安卓坏境下运行三、why? 前言 原生的json,即org.json.JSONObject; 在Android Studio中的Main方法里运行报错,但在安卓程序运行过程正常 一、Main(非安卓环境)方法下运行 static void test() {try {// 创建一个 JSON …...
京津冀协同发展:北京·光子1号金融算力中心——智能科技新高地
京津冀协同发展是党中央在新的历史条件下提出的一项重大国家战略,对于全面推进“五位一体”总体布局,以中国式现代化全面推进强国建设、民族复兴伟业,具有重大现实意义和深远历史意义。随着京津冀协同发展战略的深入推进,区域一体…...
aspnetcore使用jwt时一直提示401 authorization
测试aspnetcore使用Jwt做认证授权的时候,一直提示401 Authorization 最后发现问题所在,希望能有所帮助 1.检查注册了认证和授权中间件 缺一不可 /*认证*/app.UseAuthentication();/*授权*/app.UseAuthorization();2.检查swagger的配置项 builder.Servic…...
三款文案自动生成器,帮你轻松生成原创文案
文案在今天已经成为了许多企业和个人推广产品和服务的重要手段。然而,对于很多人来说,写作文案并非易事。有时候,我们可能会遇到文案灵感枯竭的情况,或者花费大量时间在寻找合适的词句上。但是,别担心!现在…...
多线程并发模拟实现与分析:基于Scapy的TCP SYN洪水攻击实验研究
简介 实现基于Python实现的多线程TCP SYN洪水攻击。该实例利用Scapy库构造并发送TCP SYN数据包,通过多线程技术模拟并发的网络攻击行为。 实现原理 SYN Flood攻击是一种经典的分布式拒绝服务(DDoS)攻击方式,利用了TCP协议握手过…...
git命令行提交——github
1. 克隆仓库至本地 git clone 右键paste(github仓库地址) cd 仓库路径(进入到仓库内部准备提交文件等操作) 2. 查看main分支 git branch(列出本地仓库中的所有分支) 3. 创建新分支(可省…...
LM2903BIDR比较器芯片中文资料规格书PDF数据手册参数引脚图功能封装尺寸图
产品概述: M393B 和 LM2903B 器件是业界通用 LM393 和 LM2903 比较器系列的下一代版本。下一代 B 版本比较器具有更低的失调电压、更高的电源电压能力、更低的电源电流、更低的输入偏置电流和更低的传播延迟,并通过专用 ESD 钳位提高了 2kV ESD 性能和输…...
遍历list过程中调用remove方法
1、普通for循环遍历List删除指定元素,list.remove(index) List<String> nameList new ArrayList<>(Arrays.asList("张三", "李四", "王五", "赵六")); nameList.add("张七"); nameList.add("…...
Java解决罗马数字转整数
Java解决罗马数字转整数 01 题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 …...
无忧·企业文档v2.1.9新版本发布,全新升级,新变化让文档管理更无忧!
项目介绍 JVS是企业级数字化服务构建的基础脚手架,主要解决企业信息化项目交付难、实施效率低、开发成本高的问题,采用微服务配置化的方式,提供了 低代码数据分析物联网的核心能力产品,并构建了协同办公、企业常用的管理工具等&…...
【C语言_指针[2]_复习篇】
目录 一、数组名的理解 二、使用指针访问一维数组中的每个元素 三、一维数组传参的本质 四、冒泡排序 五、二级指针 六、指针数组 七、指针数组模拟二维数组 一、数组名的理解 1. 一般情况下,数组名就是数组首元素的地址。 2. 特殊情况1:sizeof(数…...
Rust 泛型使用过程中的 <T> 和 ::<T> 的区别
Rust 的泛型语法中,<T> 和 ::<T> 有不同的用途和上下文,但它们都与泛型有关。 <T> 在类型定义中 当你在定义函数、结构体、枚举或其他类型时,使用 <T> 来表示泛型参数。例如: fn identity<T>(x:…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...





