前端学习笔记 | WebAPIs(DOM+BOM)

一、作用和分类

1、基本概念

作用:使用JS去操作HTML和浏览器

分类:DOM(文档对象模型)和BOM(浏览器对象模型)

html的标签=JS的DOM对象

2、获取DOM对象-参数必须加引号

(1)选择匹配的第一个元素:可直接进行修改

document.querySelector('选择器') //返回DOM对象

(2)获取多个:返回伪数组,只能通过遍历的方式修改

document.querySelectorAll('ul li') //返回DOM对象

(3)其他

b8ccde623f2245f58be8d1b11ce74189.png

二、操作元素

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、事件对象

是什么:也是个对象,有事件触发时的相关信息

在哪里:事件绑定的回调函数的第一个参数就是事件对象

5552bd99b7be450e972c523944670854.png

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:得到的位置优先级(以带有定位的父级>文档左上角)

dcfc11c5284b4895b00527c5d8e3b991.png

八、日期对象

日期对象:用于表示时间的对象

作用:获取当前系统时间

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,'前端')

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

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

相关文章

第10集《天台教观纲宗》

请大家打开讲义第十七页。我们讲到己二、结申正义。 己二、结申正义 《法华经》把我们修行人修行的相貌,比喻作一个车乘。车乘就是一种交通工具,它能够让我们从此岸超越到彼岸去。所以修行它是可以超越的,你今天比昨天超越了,就好…

【C语言步行梯】C语言实现三子棋游戏(含详细分析)

🎯每日努力一点点,技术进步看得见 🏠专栏介绍:【C语言步行梯】专栏用于介绍C语言相关内容,每篇文章将通过图片代码片段网络相关题目的方式编写,欢迎订阅~~ 文章目录 需求分析具体实现主函数体菜单实现游戏实…

基于微信小程序的车位共享平台的设计与实现【附项目源码】分享

基于微信小程序的车位共享平台的设计与实现: 源码地址:https://download.csdn.net/download/qq_41810183/88842865 基于微信小程序的车位共享平台设计与实现需求文档 一、引言 随着城市化进程的加快,停车难问题日益凸显。为解决这一难题,我…

VB+ACCESS学籍管理系统-264-(代码+说明)

转载地址: http://www.3q2008.com/soft/search.asp?keyword264 设计要求: 第一:一篇论文(5000到10000字)不包括图表和程序代码。A4纸20页之内。 论文结构如下: 设计题目:学籍管理系统 附:程…

高级JAVA工程师解决生产环境JVM宕机Java进程挡掉操作系统内存异常实例讲解

高级JAVA工程师解决生产环境JVM宕机Java进程挡掉内存溢出实例讲解 一、事故描述 生产环境Java进程莫名挡掉,JVM宕机。监控平台报警。生产停了,老板急了,客户爆了,怎么迅速解决事故?每次出现生产事故,都是…

使用公式在Excel中指定列值的变化实现自动间隔着色(不是按照固定的行数)

如果你的文件很小,可以手工着色;但如果很大,就要借助公式来着色; 目的是什么,其中之一是:提升可读性。 一起往下看吧!! 如果你想要根据Excel某列中值的变化来间隔着色,…

easyrecovery破解版百度云(含Mac/Win版)以及EasyRecovery可以恢复哪些设备

软件介绍 当不小心将回收站的文件删除了怎么办?想找回但是不知道怎么找回需要的数据文件?别担心今天小编就为大家介绍一款非常专业的电脑数据文件恢复工具,easyrecovery14是由Ontrack专为电脑用户推出的一款专业的数据恢复软件&…

景联文科技:提供行业垂直大模型训练数据

近年来,以大模型为代表的人工智能技术已成为国家科技实力竞争的焦点。其中垂直大模型作为重要方向,在相关政策引导及市场需求的驱动下,已展现出较强的发展活力。 行业垂直大模型是针对特定行业的需求和场景进行深度定制的。这意味着模型在训练…

蓝桥杯专题 bfs习题详解

1.离开中山路 #include<iostream> #include<cstring> #include<queue> #include<algorithm> #include<string> using namespace std; int x1,x2,y1,y2; int n,n1,m1; const int N1010;typedef pair<int,int> PII; queue<PII> q;int …

GIS软件应用(二)

任务&#xff1a; 1. 正确划分渔网并裁剪出研究区域 2. 渔网与poi数据正确空间链接并统计网格内类别POI数量 步骤&#xff1a; 将南京市边界进行投影变换&#xff0c;具体看我的这篇文章&#xff1a;GIS软件应用&#xff08;一&#xff09;-CSDN博客 选择ArcToolbox中的 Cr…

3.Linux/UNIX平台Python的下载、安装和配置环境变量——《跟老吕学Python编程》

3.Linux/UNIX平台Python的下载、安装和配置环境变量——《跟老吕学Python编程》 一、下载Linux/UNIX版Python1.Python官网2.Linux/UNIX版Python下载网址 二、在Linux/UNIX安装Python1.在Ubuntu Linux安装Python1.1 检查Python版本1.2 高级包管理工具1.3 添加存储库1.4 更新软件…

HTML静态网页成品作业(HTML+CSS)——电影肖申克的救赎介绍设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

【Flink SQL】Flink SQL 基础概念:SQL 动态表 连续查询

Flink SQL 基础概念&#xff1a;SQL 动态表 & 连续查询 1.SQL 应用于流处理的思路2.流批处理的异同点及将 SQL 应用于流处理核心解决的问题3.SQL 流处理的输入&#xff1a;输入流映射为 SQL 动态输入表4.SQL 流处理的计算&#xff1a;实时处理底层技术 - SQL 连续查询5.SQL…

Netty架构详解

文章目录 概述整体结构Netty的核心组件逻辑架构BootStrap & ServerBootStrapChannelPipelineFuture、回调和 ChannelHandler选择器、事件和 EventLoopChannelHandler的各种ChannelInitializer类图 Protocol Support 协议支持层Transport Service 传输服务层Core 核心层模块…

Windows C++ 使用WinAPI实现RPC

demo下载地址&#xff1a;https://download.csdn.net/download/2403_83063732/88958730 1、创建IDL文件以及acf文件&#xff08;创建helloworld.idl helloworld.acf&#xff09; 其中IDL文件&#xff1a; import "oaidl.idl"; import "ocidl.idl"; [ …

【LeetCode热题100】73. 矩阵置零(矩阵)

一.题目要求 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 二.题目难度 中等 三.输入样例 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0…

2024考研计算机考研复试-每日重点(第二十期)

公众号“准研计算机复试”&#xff0c;超全大佬复试资料&#xff0c;保姆级复试&#xff0c;80%的题目都是上岸大佬提供的。 研宝们&#xff0c;App更新啦&#xff01; 计算机组成原理&#xff1a; 10.☆什么是数据存储的大端模式和小端模式&#xff1f; 大端模式&#xff1a;数…

github拉取项目找不到前端代码

今天从github上拉取了一个项目&#xff0c;使用docker部署在了服务器上&#xff0c; 代码正常运行&#xff0c;但是想在下载的项目中找前端代码遇到了问题&#xff0c;项目结构中的template模板只有一个页面&#xff0c;于是查看nginx配置文件 查看index.html 引入了一些js文件…

使用Julia及R语言生成正态分布的随机数字并写入CSV文件

在操作之前需要先下载Julia的Distributions包&#xff0c;这个包用于进行相关概率分布的函数调用。 在输入 ] 进入Julia包管理模式后输入&#xff1a; add Distributions 这里我使用我们自己实验室的实测数据 &#xff0c;平均值0.67&#xff0c;方差0.11&#xff0c;数据分…

聚氨酯封孔剂因为热爱

忙忙碌碌又一天,对每个顾客都用心服务,因为热爱,所以不辛苦,因为热爱,即使无数遍的重复也不会厌倦。 聚氨酯封孔材料的主要性能特点&#xff1a; 1、粘度低&#xff0c;易渗入微小裂隙&#xff1b; 2、粘合能力很强&#xff0c;具有持久强粘结性&#xff1b; 3、柔韧性.越&am…