JavaScript 学习笔记(WEB APIs Day1)

news2024/11/24 2:35:56

「写在前面」

本文为 b 站黑马程序员 pink 老师 JavaScript 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。推荐先按顺序阅读往期内容:
1. JavaScript 学习笔记(Day1)
2. JavaScript 学习笔记(Day2)
3. JavaScript 学习笔记(Day3)
4. JavaScript 学习笔记(Day4)
5. JavaScript 学习笔记(Day5)


目录

  • 1 Web APIs 课程安排
  • 2 变量声明
  • 3 Web API 基本认知
  • 4 获取DOM对象
  • 5 操作元素内容
  • 6 操作元素属性
  • 7 定时器-间歇函数
  • 8 综合案例

1 Web APIs 课程安排

P78:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=78

2 变量声明

P79:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=79

变量声明时,用 let 还是 const?

建议:有了变量先给 const,如果发现它后面是要被修改的,再改为 let

  • const 声明的值不能更改,而且const声明变量的时候需要里面进行初始化
  • 但是对于引用数据类型,const声明的变量,里面存的不是值,是地址。
alt
alt

3 Web API 基本认知

3.1 作用和分类

P80:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=80

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

3.2 什么是DOM

DOM(Document Object Model——文档对象模型)是用来呈现以及与任意 HTML 或 XML文档交互的 API

DOM 是浏览器提供的一套专门用来 操作网页内容 的功能

DOM 作用:开发网页内容特效和实现用户交互

3.3 DOM树

DOM树是什么:

  • 将 HTML 文档以树状结构直观的表现出来,我们称之为文档树或 DOM 树
  • 描述网页内容关系的名词
  • 作用: 文档树直观的体现了标签与标签之间的关系
alt

3.4 DOM对象

  • DOM对象:浏览器根据 html 标签生成的 JS对象
    • 所有的标签属性都可以在这个对象上面找到
    • 修改这个对象的属性会自动映射到标签身上
  • DOM的核心思想
    • 把网页内容当做 对象来处理
  • document 对象
    • 是 DOM 里提供的一个 对象
    • 所以它提供的属性和方法都是 用来访问和操作网页内容的
      • 例:document.write()
    • 网页所有内容都在 document 里面
<body>
<div>123</div>
<script>
const div = document.querySelector('div')
console.dir(div) // dom 对象
</script>
</body>

4 获取DOM对象

P81:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=81

4.1 根据CSS选择器来获取DOM元素

1. 选择匹配的第一个元素

语法:

document.querySelector('css选择器')

参数:

  • 包含一个或多个有效的CSS选择器 字符串

返回值:

  • CSS选择器匹配的第一个元素,一个 HTMLElement对象。
  • 如果没有匹配到,则返回null。

2. 选择匹配的多个元素

语法:

document.querySelectorAll('css选择器')

参数:

  • 包含一个或多个有效的CSS选择器 字符串

返回值:

  • CSS选择器匹配的 NodeList 对象集合

得到的是一个伪数组

  • 有长度有索引号的数组
  • 但是没有 pop() push() 等数组方法

想要得到里面的每一个对象,则需要遍历(for)的方式获得。

哪怕只有一个元素,通过querySelectAll() 获取过来的也是一个伪数组,里面只有一个元素而已

<body>
<div class="box">123</div>
<p id="nav">导航栏</p>
<ul>
<li>测试1</li>
<li>测试2</li>
<li>测试3</li>
</ul>
<script>
// 1. 获取匹配的第一个元素
const box = document.querySelector('div')
const box = document.querySelector('.box')
const nav = document.querySelector('#nav')
const li = document.querySelector('ul li:first-child')
// 2. 选择所有的小li
const lis = document.querySelectorAll('ul li')
for (let i = 0; i < lis.length; i++){
console.log(lis[i]) // 输出每一个小li对象
}
</script>
</body>

4.2 其他获取DOM元素方法(了解)

// 根据id获取一个元素
document.getElementById('nav')
// 根据标签获取一类元素,获取页面所有div
document.getElementsByTagName('div')
// 根据类名获取元素,获取页面所有类名为w的
document.getElementsByClassName('w')

5 操作元素内容

P82:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=82

1. 元素 .innerText 属性

  • 将文本内容添加/更新到任意标签位置
  • 显示纯文本, 不解析标签

2. 元素 .innerHTML 属性

  • 将文本内容添加/更新到任意标签位置
  • 会解析标签,多标签建议使用模板字符
<body>
<div class="box">我是文字的内容</div>
<script>
// 获取元素
const box = document.querySelector('.box')
// 获取标签内部的文字
console.log(box.innerText)
// 修改文字内容,不解析标签
box.innerText = '我是一个盒子'
// 修改文字内容,解析标签
box.innerHTML = '<strong>我是一个盒子</strong>'
</script>

</body>

6 操作元素属性

6.1 操作元素常用属性

P83:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=83

语法:对象.属性 = 值

<body>
<img src="./images/1.webp" alt="">
<script>
// 1. 获取图片元素
const img = document.querySelector('img')
// 2. 修改图片对象的属性
img.src = './images/2.webp'
img.title = 'pink老师的艺术照'
</script>
</body>

6.2 操作元素样式属性

P84:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=84

1.通过 style 属性操作CSS

语法:对象.style.样式属性 = 值

<body>
<div class="box"></div>
<script>
// 1.获取元素
const box = document.querySelector('.box')
// 2.修改样式属性 对象.styLe.样式属性 = '值' 别忘了跟单位
box.style.width = '300px'
// 多组单词的采取 小驼峰命名法
box.style.backgroundColor = 'hotpink'
box.style.border = '2px solid blue'
box.style.borderTop = '2px solid red'
</script>
</body>

2. 操作类名(className) 操作CSS

P85:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=85

如果修改的样式比较多,直接通过style属性修改比较繁琐,我们可以通过借助于css类名的形式。

语法:

// active 是一个css类名
元素.className = 'active'

注意:

  1. 由于class是关键字, 所以使用 className去代替
  2. className是使用新值换旧值, 如果需要添加一个类,需要保留之前的类名

例:

<head>
<style>
.nav {
color: red;
}

.box {
width: 300px;
height: 300px;
}
</style>
</head>

<body>
<div class="nav"></div>
<script>
// 1. 获取元素
const div = document.quertSelector('div')
// 2. 添加类名
div.className = 'nav box'
</script>
</body>

3. 通过 classList 操作类控制CSS

P86:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=86

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

语法:

// 追加一个类
元素.classList.add('类名')
// 删除一个类
元素.classList.remove('类名')
// 切换一个类
元素.classList.toggle('类名')

例:

<head>
<style>
.box {
width: 300px;
height: 300px;
color: #333;
}

.active {
color: red;
background-color: pink;
}
</style>
</head>

<body>
<div class="box">文字</div>
<script>
// 1. 获取元素
const box = document.quertSelector('.box')
// 2. 通过classList添加样式,类名不加点,并且是字符串
// add() 追加类
box.classList.add('active')
// remove() 删除类
box.classList.remove('box')
// toggle() 切换类,有就删掉,没有就加上
box.classList.toggle('active')
</script>
</body>

随机轮播图案例:

P87:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=87

P88:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=88

alt

6.3 操作表单元素属性

P89:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=89

  • 获取: DOM对象.属性名
  • 设置: DOM对象.属性名 = 新值

例:

<body>
<input type="text" value="电脑">
<script>
// 1. 获取元素
const uname = document.quertSelector('input')
// 2. 获表单里面的值
console.log(uname.value) // 电脑
console.log(uname.type) // text
// 3. 设置表单的值
uname.value = '我要买电脑'
uname.type = 'password'
</script>
</body>
  • 表单属性中添加就有效果,移除就没有效果,一律使用布尔值表示 如果为true 代表添加了该属性 如果是false 代表移除了该属性
  • 比如: disabled、checked、selected
<body>
<input type="checkbox">
<script>
// 1. 获取元素
const ipt = document.quertSelector('input')
// 2. 修改属性
ipt.checked = true // 只接收布尔值,不用字符串
</script>
</body>

6.4 自定义属性

P90:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=90

  • 标准属性: 标签天生自带的属性 比如class id title等, 可以直接使用点语法操作比如: disabled、checked、selected
  • 自定义属性:
    • 在html5中推出来了专门的data-自定义属性
    • 在标签上一律以data-开头
    • 在DOM对象上一律以dataset对象方式获取

例:

<body>
<div data-id="1" data-spm="不知道">1</div>
<div data-id="2">2</div>
<div data-id="3">3</div>
<script>
const one = document.querySelector('div')
console.log(one.dataset) // {id: '1', spm: '不知道'}
console.log(one.dataset.id) // 1
</ script>
</ body>

7 定时器-间歇函数

P91:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=91

定时器函数可以开启和关闭定时器

1. 开启定时器

语法:

setInterval(函数, 间隔时间)
  • 作用:每隔一段时间调用这个函数
  • 间隔时间单位是毫秒

例:

<script>
setInterval(function () {
console.log('一秒执行一次')
}, 1000)
</script>

2. 关闭定时器

语法:

let 变量名 = setInterval(函数, 间隔时间)
clearInterval(变量名)

例:

function fn() {
console.log('一秒执行一次')
}
// setInterval(函数, 间隔时间),函数名不用加小括号
let n = setInterval(fn, 1000)
// 关闭定时器
clearInterval(n)

P92:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=92

alt

8 综合案例

P93:https://www.bilibili.com/video/BV1Y84y1L7Nn?p=93

alt

「结束」
alt

本文由 mdnice 多平台发布

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

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

相关文章

【Proteus仿真】【STM32单片机】甲醛浓度检测报警器

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用蜂鸣器LED模块、LCD1602显示模块、按键、MS1100甲醛传感器模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示甲醛气体浓度检测…

物联网孢子捕捉分析仪在农田起到什么作用

TH-BZ03随着科技的飞速发展&#xff0c;物联网技术在农业领域的应用越来越广泛。其中&#xff0c;物联网孢子捕捉分析仪作为一种先进的设备&#xff0c;在农田中发挥着不可或缺的作用。本文将详细介绍物联网孢子捕捉分析仪在农田中的作用。 一、实时监测与预警 物联网孢子捕捉分…

【Docker】使用Docker安装Nginx及部署前后端分离项目应用

一、Nginx介绍 Nginx是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。它是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的&#xff0c;公开版本1.19.6发布于2020年12月15日。其将源代码以类BSD许可证的形式发布&#xff0c;因它…

项目经理进阶之路:如何应对不同阶段的挑战?

最近看到一个帖子&#xff0c;有网友提问&#xff0c;“项目经理的职业发展会经历哪几个阶段&#xff1f;不同阶段需要关注什么&#xff1f;又分别会遇到哪些挑战&#xff1f;“这个帖子引发了广大项目经理们的热议&#xff0c;大家纷纷吐槽&#xff0c;自己遇到了职业瓶颈、询…

Qt SDL2播放Wav音频

这里介绍两种方法来实现Qt播放Wav音频数据。 方法一&#xff1a;使用QAudioOutput pro文件中加入multimedia模块。 #include <QApplication> #include <QFile> #include <QAudioFormat> #include <QAudioOutput>int main(int argc, char *argv[]) {…

RK3566 linux修改CMA size

1、进入内核配置界面 执行命令&#xff1a; cd kernel make ARCHarm64 menuconfig 2、搜索CONFIG_CMA_SIZE_MBYTES 在配置界面输入/搜索CONFIG_CMA_SIZE_MBYTES&#xff0c;结果如下&#xff1a; 根据提示进入以下界面&#xff1a; 修改Size in Mega Bytes的值。

【时间复杂度】时间复杂度优化法则简讲

一、引言 时间复杂度是衡量算法运行效率的一项重要指标&#xff0c;它描述了随着输入规模的增加&#xff0c;算法的执行时间如何增长。在算法设计与分析中&#xff0c;我们经常面临着优化时间复杂度的任务&#xff0c;以便提高程序的性能。本博客将深入探讨时间复杂度的优化法…

UJA1169A恢复出厂设置(Restoring factory preset values)

UJA1169A是一款CAN芯片&#xff0c;同时又带有硬件看门狗的功能。出厂默认是Forced Normal模式&#xff0c;此时看门狗是禁用的。CAN通信的正常功能是在Forced Normal/Normal模式下才好用的&#xff0c;Normal模式下需要配置。包含位FNMC&#xff08;地址74h&#xff09;的寄存…

Uniapp多选Popup(弹出层)

uniapp中多选组件很少&#xff0c;故个人简单开发了一个&#xff0c;可简单使用&#xff0c;也可根据个人需求稍微改进 支持的功能 单选多选&#xff08;默认&#xff09;限制选择数量默认选中禁用选项 属性说明 属性默认值说明singlefalsetrue为开启单选&#xff0c;否则为…

【网络安全】2024年一个漏洞4w+,网安副业挖SRC漏洞,躺着把钱挣了!

一个漏洞奖励2w&#xff0c;这是真实的嘛&#xff01; 作为资深白帽&#xff0c;入行网安这些年也一直在接私活&#xff0c;副业赚的钱几乎是我工资的三倍&#xff01;看到最近副业挖漏洞的内容非常火爆&#xff0c;我便决定将自己的经验分享出来&#xff0c;带我的粉丝们一起…

css3 纯代码案例

css3 纯代码案例 前言渐变之美1.1 纯CSS3实现的渐变背景1.2 使用多重颜色和方向打造丰富渐变效果1.3 渐变色停留动画的巧妙运用 纯CSS图形绘制2.1 使用border属性制作三角形、梯形等形状伪类箭头图标2.2 利用transform创建旋转、缩放的图形 浮动的阴影敲代码css准备reset 样式复…

JS封装本地缓存的设置,读取,移除,清空方法及使用示例

我封装了一个JS通用的缓存管理对象&#xff0c;可以提供缓存的设置&#xff0c;读取&#xff0c;移除&#xff0c;清空操作&#xff0c;使用也很方便&#xff0c;封装方法的代码在最下方。 Q: 为什么不直接用原生的缓存方法&#xff0c;要封装&#xff1f; A1:原生的缓存管理…

MySQL篇—性能压测工具mysqlslap介绍

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣…

SpringBoot参数校验@Validated、@Valid

SpringBoot参数校验Validated、Valid&#xff08;javax.validation&#xff09; 一、应用场景 在实际开发中&#xff0c;前端校验并不安全&#xff0c;任何人都可以通过接口来调用我们的服务&#xff0c;就算加了一层token的校验&#xff0c;有心人总会转空子&#xff0c;来传…

如何禁用WordPress站点的管理员电子邮件验证或修改检查频率?

今天boke112百科登录某个WordPress站点时&#xff0c;又出现“管理员邮件确认”的提示&#xff0c;要求确认此站点的管理员电子邮箱地址是否仍然正确。具体如下图所示&#xff1a; 如果点击“稍后提醒我”&#xff0c;那么管理员邮件验证页面就会在3天后重新显示。 说实话&…

【JVM】JVM概述

JVM概述 基本介绍 JVM&#xff1a;全称 Java Virtual Machine&#xff0c;即 Java 虚拟机&#xff0c;一种规范&#xff0c;本身是一个虚拟计算机&#xff0c;直接和操作系统进行交互&#xff0c;与硬件不直接交互&#xff0c;而操作系统可以帮我们完成和硬件进行交互的工作特…

大数据开发之Hadoop(MapReduce)

第 1 章&#xff1a;MapReduce概述 1.1 MapReduce定义 MapReduce是一个分布式运算程序的编程框架&#xff0c;是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并…

我的隐私计算学习——联邦学习(4)

本篇笔记部分内容来源于这位老师的知识分享【公众号&#xff1a;秃顶的码农】&#xff0c;我从他的资料里学到了很多&#xff0c;期间还私信询问了一些困惑&#xff0c;都得到了老师详细的答复&#xff0c;相当nice&#xff01; &#xff08;六&#xff09;横向联邦学习 — 梯度…

学习VUE-安装环境

下载安装Node.js 官网下载最新版本&#xff1a;https://nodejs.org/en/download/ 解压zip包 由于node.js默认安装了npm所以不用额外配置全局命令就可以使用npm命令 在cmd中输入node -v 和 npm -v就可以得到版本信息 配置一下目录&#xff1a; node.js环境配置 配置镜像 安装…

命令行参数环境变量和进程空间地址

文章目录 命令行参数环境变量进程地址空间 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站。 命令行参数 什么是命令行参数&#xff1f; 我…