查漏补缺 - JS三 WebAPI

目录

  • BOM
    • history
  • DOM
    • 操作DOM
      • 1,`dom.children` 和 `dom.childNodes` 区别
      • 2,`dom.remove()`
      • 3,其他常用 API
    • DOM 属性
      • 1,标准属性
      • 2,自定义属性
    • DOM 内容
    • DOM样式
    • DOM事件

JavaScript 包括 EcmaScriptWebAPI

  • EcmaScript 包括 语言规范+标准库。浏览器和 node 环境都完整支持。
  • WebAPI 包括 BOM + DOM,是浏览器自己实现的,所以各个浏览器厂商可能略有区别。
    • BOM,Browser Object Model,浏览器模型,提供和浏览器相关的操作
    • DOM,Document Object Model,文档模型,提供和页面相关的操作

在这里插入图片描述

setTimeout 虽然是 WebAPI,但浏览器和 node 都实现了。node 中的全局对象是 global:global.setTimeout

在这里插入图片描述

BOM

主要指 window 对象的一些常用属性和函数。

  • location
  • history
  • setTimeout

经典启停计时器:

var timerId = null;function start() {if (timerId) {return;}timerId = setInterval(() => {console.clear();console.log(new Date().toLocaleString());}, 1000);
}function stop() {clearInterval(timerId);timerId = null; // 否则 start 中判断永远为 true
}

history

提供当前窗口历史记录的操作。

无法获取历史记录,因为这是用户隐私。只能控制前进后退。

API作用备注
window.history.back()后退
window.history.forward()前进
window.history.go()相对当前页面,进入指定记录页
window.history.pushState()添加一条历史记录页面不刷新
window.history.replaceState()替换当前记录页面不刷新

历史记录是一个模式,后进先出。

pushState 举例

DOM

操作DOM

1,dom.childrendom.childNodes 区别

二者得到的都是伪数组。

  • dom.children 获取 dom 的子元素
  • dom.childNodes 获取 dom 的子节点
<div id="test">这是 <span>DOM</span>元素</div>

在这里插入图片描述
可以直接修改 DOM 元素的内容

const div = document.querySelector("#test");
div.children[0].textContent = '123' // 也可以修改其他的属性,比如 innerHTML innerText

2,dom.remove()

是指从 DOM 树中删除,这个 js 对象还在。

在这里插入图片描述

3,其他常用 API

API含义备注
dom.previousElementSibling得到 dom 前一个兄弟元素
dom.nextElementSibling得到 dom 后一个兄弟元素
dom.parentElement得到 dom 的父元素
dom.remove()从文档树中删除 domdom 对象还在
dom.removeChild()删除 dom 的某个子节点参数为 dom 对象
dom.insertBefore(newNode, referenceNode)在 dom 的子节点中,添加一个新节点到指定节点之前referenceNode 为指定节点
dom.appendChild()添加一个新节点到 dom 的子节点末尾参数为 dom 对象

DOM 属性

这里的【属性】,指 HTML 元素的【属性】

  • 标准属性:html元素自身拥有的。比如 a.hrefinput.valueimg.src
  • 自定义属性

1,标准属性

通过dom.属性名 获取,并有以下规则:

1,布尔属性会被自动转换为 boolean

2,路径类的属性会被转换为绝对路径

<img src="./vue.svg" alt="" />

在这里插入图片描述

3,标准属性始终都是存在的,不管你是否设置该属性

4,class 由于和关键字重名,因此获取和设置 class 时使用 className

<div class="test">123</div>

在这里插入图片描述

2,自定义属性

  • 获取 dom.setAttribute(name, value)
  • 设置 dom.getAttribute(name)

如果用获取自定义属性的 API 获取标准属性,获取的是 html 源代码中的内容

<img src="./vue.svg" alt="" />

在这里插入图片描述

DOM 内容

dom.innerTextdom.innerHTML 这2个比较熟悉,不多赘述。

还有一个 dom.textContent,它和dom.innerText 的区别看这里。

  • textContent 或获取所有元素的内容,包括隐藏的。
  • innerText 受 css 影响,只获取展示的内容。而且因为受 css 影响,为了确保获取最新的计算样式,会出发 reflow(重排)

vue 中的 v-html 通过 innerHTML 实现;v-text 通过 textContent 实现。

DOM样式

通过 window.getComputedStyle() 获取最终计算样式。

通过 dom.style 获取和设置内联样式,并有以下规则:

<div style="color: red; font-size: 18px;">123</div>

1,当给样式赋值为空字符串时,相当于删除内联样式

$0.style.color = '' // 删除 color 样式

2,当给样式的赋值不合法时,赋值语句无效,不会报错

$0.style.color = 'abc' // color 保持原值,该语句不报错。

3,CSS 的短横线命名法,在属性名中表现为驼峰命名法

$0.style.fontSize = '20px'

DOM事件

1,注册事件的对象

不同的对象,可以注册的事件列表。

可以注册事件的对象包括 windowHTMLElementDocument

2,事件回调函数中的 this 指向注册事件的对象。

<button>点击</button>
<script>let btn = document.querySelector("button");btn.addEventListener("click", function () {console.log(this);});btn = null;
</script>

上面的 this 依旧是 button 元素,因为 btn 只是存放了 button 元素对象的引用地址。
换句话说,通过 btn 给 button 元素注册事件后,btn 对事件处理函数来说,已经没用了。

3,DOM2DOM3 事件的区别

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

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

相关文章

OB Cloud上新,4.1版本现已全面开放

2022 年 8 月 10 日&#xff0c;OceanBase 宣布 OceanBase 公有云服务全球开服&#xff0c;帮助不同规模客户&#xff0c;在全球不同区域&#xff0c;享受同样优质的企业级数据库产品与服务。 经过近一年的发展&#xff0c;公有云业务取得了长足的发展&#xff0c;去年对客收入…

【基于空间纹理的残差网络无监督Pansharpening】

Unsupervised Pansharpening method Using Residual Network with Spatial Texture Attention &#xff08;基于空间纹理的残差网络无监督泛锐化方法&#xff09; 近年来&#xff0c;深度学习已经成为最受欢迎的泛锐化工具之一&#xff0c;许多相关方法已经被研究并反映出良好…

SpringBoot项目在启动后自动关闭

问题描述&#xff1a; 今天搭建了一个SpringBoot项目&#xff0c;但是在启动之后就自行关闭了&#xff0c;就像下面这样&#xff1a; 原因分析&#xff1a;在创建SpringBoot项目的时候&#xff0c;Web的依赖没有导入&#xff0c;默认以普通java项目运行导致的终止。 解决方案…

Java“牵手”1688商品详情数据,1688API接口申请指南

1688平台商品详情接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取1688商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片等详细信息 。 获取商品详情接口API是一种用于获取电商平台上商品详情数据的接口&#xff0c;通过…

网络编程

1. 网络编程入门 1.1 网络编程概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统…

10个免费PPT下载资源网站分享

PPT超级市场https://pptsupermarket.com/ PPT超级市场是一个完全免费的PPT模板下载网站&#xff0c;不需要注册登录&#xff0c;点击下载就能直接使用。 叮当设计https://www.dingdangsheji.com/ 叮当设计是一个完全免费的PPT模板下载网站&#xff0c;每一套PPT的质量都很高。除…

说说我最近筛简历和面试的感受。。

大家好&#xff0c;我是鱼皮。 都说现在行情不好、找工作难&#xff0c;但招人又谈何容易&#xff1f;&#xff01; 最近我们公司在招开发&#xff0c;实习社招都有。我收到的简历很多&#xff0c;但认真投递的、符合要求的却寥寥无几&#xff0c;而且都是我自己看简历、选人…

域内密码喷洒

在Kerberos阶段认证的AS-REQ阶段&#xff0c;请求包cname对应的值是用户名&#xff0c;当用户名存在时候&#xff0c;密码正确和错误两种情况下&#xff0c;AS-REP返回包不一样&#xff0c;所以可以利用这一点对域用户名进行密码喷洒攻击 域内密码喷洒工具 Kerbrute kerbrut…

说说Flink双流join

分析&回答 Flink双流JOIN主要分为两大类 一类是基于原生State的Connect算子操作另一类是基于窗口的JOIN操作。其中基于窗口的JOIN可细分为window join和interval join两种。 基于原生State的Connect算子操作 实现原理&#xff1a;底层原理依赖Flink的State状态存储&…

WIFI模块的工作原理及AP模式和STA模式的区别

WiFi模块的运作原理&#xff1a; WiFi模块通常由两大核心组件构成&#xff1a;无线芯片和微处理器。无线芯片专注于处理无线信号的传送与接收&#xff0c;而微处理器则全面管理和调控WiFi模块的各项功能。数据传输过程中&#xff0c;无线芯片利用无线电波进行信号的交互。通过…

打车系统网约车系统开发支持APP公众号H5小程序版本源码

一、操作流程 二、业务模式 三、用户端 用户注册登录&#xff1a;未注册的手机号将自动创建账号 通过好友的邀请链接进行注册&#xff0c;将会绑定上下级关系 也可以注册的时候输入好友的邀请码&#xff0c;也可以绑定关系 用户充值&#xff1a; 用户下单支付时&#xff0c;可以…

MTK6761/MT6761安卓核心板4G安卓智能模块详细参数性能介绍

MTK6761 安卓核心板采用12nm制程四核Cortex-A53、最高主频2.0GHZ 处理器&#xff0c;板载内存为 1GB8GB(2GB16GB、3GB32GB、4GB64GB)&#xff0c;搭载Android 9.0操作系统。 MTK6761&#xff08;曦力 A22&#xff09;安卓核心板基本概述 MTK6761安卓核心板 是一款高性能低功耗…