webAPI-DOM
目录
- JavaScript与ECMAScript+
 - DOM
 - 时间对象属性与方法的集合体
 - 定时器函数
 - 案例
 
1.1-JavaScript与ECMAScript
目标:知道 ECMAScript 与 JavaScript 的关系,Web APIs 是浏览器扩展的功能
ECMAScript 是一套语法标准
- 简称ES
 
我们之前学的语法其实就是 ECMAScript 里的语法
- 变量、数据类型、运算等规则都是 ECMAScript 规定的
 
JavaScript 是什么?
- 遵守 ECMAScript 规则的一套编程语言
 - 严格来讲,ECMAScript 配合浏览器提供的 Web APIs 才称之为 JavaScript
 
Web APIs 是什么?
- 浏览器提供的一套操作浏览器、页面内容的功能(主要是一些对象和方法 )
 
1.2-JavaScript和node.js

二、DOM
2.1 DOM概念
什么是DOM
- 把HTML相关标签当作对象处理
 
DOM树
- 把HTML页面当作页面,叫做DOM树脂
 
DOM节点
- HTML页面每一个标签叫做DOM节点、元素对象;element
 
document
- DOM树 整个文档 对象(属性和方法结合体) { } [ ] 万物皆对象:标签
 
2.1.1 DOM是什么
目标:能说出DOM是什么
DOM是什么?
DOM是浏览器提供的一套专门用来操作网页内容的功能
DOM的核心思想
- 把网页内容当做对象来处理
 
DOM作用
- 开发网页内容特效和实现用户交互
 
DOM全称
- Document Object Model(文档对象模型)
 
2.1.2 DOM树
目标:能说出DOM树是什么
DOM树是什么
- 将 HTML 文档以树状结构直观的表现出来,我们称之为文档树或 DOM 树
 - 描述网页内容关系的名词
 - 作用:文档树直观的体现了标签与标签之间的关系
 

2.1.3 DOM节点
目标:能说出DOM节点的类型
DOM节点
- DOM树里每一个内容都称之为节点
 
节点类型
元素节点
- 所有的标签 比如 body、 div
 - html 是根节点
 
属性节点
- 所有的属性 比如 href
 
文本节点
- 所有的文本
 
- 其他
 
2.1.4 document
目标:能说出document对象的作用
document
是 DOM 里提供的一个对象
所以它提供的属性和方法都是用来访问和操作网页内容的
 例:document.write()代表浏览器显示网页内容的区域
网页所有内容都在document里面
document 是学习 DOM 的核心

2.1 DOM概念总结
目标:知道 DOM 相关的概念,建立对 DOM 的初步认识
DOM是什么?
- 文档对象模型
 - DOM是浏览器提供的一套专门用来操作网页内容的功能
 
DOM 树是什么?
- 将 HTML 文档以树状结构直观的表现出来,我们称之为文档树或 DOM 树
 - 作用:文档树直观的体现了标签与标签之间的关系
 
DOM 节点是什么?
- DOM树里每一个内容都称之为节点
 - 常见的DOM 节点类型: 元素节点、属性节点、文本节点等
 
document 是什么?
- 是 DOM 里提供的一个对象,用来访问和操作网页内容的
 
2.2 查找元素节点
目标:能查找元素DOM节点
- HTML 中任意标签都是【元素类型节点】
 - 所以: 查找元素节点就是选择页面中标签元素
 
- 根据 id 来查找dom元素节点
语法:document.getElementById('标签的id');
 
- 根据id查找标签
 - 传入的id是字符串,记得加引号,直接写id名即可,不需要加 #
 - 返回一个匹配到 ID 的 DOM Element 对象(所有节点都是对象)
 - 找不到会得到null
 - 可以通过对象里面的 nodeType 属性来标识节点类型
 
// 方法:// 翻译: get获取得到 Element元素 by通过 id:标签唯一标识// 作用:获取元素对象// 参数:字符串、放入找哪个标签ID值,注意不要选择器,没有#// 返回:document.getElementById();
- 查找html和body元素节点
 
// html:第二的单词首字母大写,不常用// console.log(document.documentElement)// body// console.log(document.body)// webAPI:推荐放在body后面
2.3 操作元素节点
目标:能够操作元素节点更改元素的属性和文本内容
提问:操作标签我们都可以做哪些修改?
 标签的属性 比如更换图片修改 img的src 属性
 标签的文本内容
语法: 对象. 属性 = 值
举例说明://1.获取DOM节点:对象let img = document.getElementById("pic")// 2.操作DOM节点:属性和方法结合体//获img.src=取属性? src alt width 都是DOM节点自带属性名// img.src imd.id 点语法获取//设置属性 ?img.src = "./images/b03.jpg";img.alt = "啊哈哈哈哈哈";img.width = "700";
语法:对象.setAttribute(‘属性’,’值’)
/* 设置属性方法:DOM节点上带方法单词:set 设置 Attribute 属性参数:第一:设置哪个属性字符串,第二:设置的属性值; */img.setAttribute("src", "./images/b07.jpg")//目前:两个方式功能一样,推荐使用简单 对象.属性名
语法:对象.style.样式属性 = 值

//1.获取宽度let div = document.getElementById("box")/* 2.获取刚才为什么可以 ? dom : img有这样设置 width = 500现在是div: style = "width:30epx;height: 300px;"注意: 具体某个屈性名如何是连字符, 转换为驼峰命名规则只能获取行内样式:*/console.log(div.width, div.style.width, div.style.backgroundColor)div.style.width = '600px';//css 属性的 -连接符与js的减运算符div.style.backgroundColor = '#333';
案例1-随机变化背景案例:
<style>body {/* 不需要设置宽度,设置背景图有效! */background: url(../代码/images/b01.jpg) no-repeat;}</style></head><body><script>//需求:刷新页面,背景图随机换一个// 步骤: 1.获取dom节点let body = document.body;//随机:1-9随机的一个整数let i = Math.floor(Math.random() * 9) + 1;//2.设置背景图片:body.style.background = `url(../代码/images/b0${i}.jpg) no-repeat`;</script></body>
2.3.2 操作元素文本
目标:能够修改元素的文本更换内容
document.write
只能将文本内容追加到
文本中包含的标签会被解析
//永远都只是追加操作,且只能位置</body>前document.write( 'Hello world ! ' );document.write( ' <h3>你好,世界!</h3>')
- innerText 属性
 
将文本内容添加/更新到任意标签位置
文本中包含的标签不会被解析
l /innerText将文本内容添加/更新到任意标签位置let info = document.getElementById( ' info ')//intro.innerText =‘嗨~我叫李雷!’info.innerText = '<h4>嗨~我叫李雷!</h4>'
//问let ul = document.getElementById("demo")ul.innerHTML = "<h2>哈哈大大</h2>"console.log(ul.innerText, ul.innerHTML)
操作元素小结
操作元素属性有哪些方式?
- 点语法操作属性(推荐) 对象.属性
 - setAttribute(‘属性’, ‘值’)
 - 对象.style.样式名
 
操作元素文本有哪些方式?
- document.write()
 - innterText 不解析标签
 - innerHTML 解析标签
 
三、时间对象
目标:掌握时间对象,可以让网页显示时间
时间对象:用来表示时间的对象
作用:可以得到当前系统时间
学习路径:
- 实例化
 - 时间对象方法
 - 时间戳
 
3.1 实例化
在代码中发现了 new 关键字时,一般将这个操作称为实例化
创建一个时间对象并获取时间
- 获得当前时间
let date = new Date( )
 
- 获得当前时间
 
- 获得指定时间
let date = new Date(‘1949-10-01’)
 
3.2 时间对象方法
目标:能够使用时间对象中的方法写出常见日期
- 因为时间对象返回的数据我们不能直接使用,所以需要转换为实际开发中常用的格式 | 方法 | 作用 | 说明 | | :—-: | :—-: | :—-: | | getFullYear() | 获得年份 | 获取四位年份 | | getMonth() | 获得月份 | 取值为 0 ~ 11 | | getDate() | 获取月份中的每一天 | 不同月份取值也不相同 | | getDay() | 获取星期 | 取值为 0 ~ 6 | | getHours() | 获取小时 | 取值为 0 ~ 23 | | getMinutes() | 获取分钟 | 取值为 0 ~ 59 | | getSeconds() | 获取秒 | 取值为 0 ~ 59 |
 
案例2-页面显示时间案例:
<div id="box"></div><script>// 需求:页面某个盒子 显示系统时间// 个位数,0-9 双位数function fn(num) {if (num < 10) {num = '0' + num}return num;}//步骤//1.得到时间对象let time = new Date();//2.对象上方法执行,获取对于数据let Y = time.getFullYear();let M = time.getMonth() + 1;M = fn(M);let D = time.getDate();D = fn(D);let h = time.getHours();h = fn(h);let a = time.getMinutes()a = fn(a)// 秒let t = time.getSeconds()t = fn(t)let div = document.getElementById("box")document.write(`${Y}-${M}-${D}-${h}:${a}:${t}`)/* 重点:1.学会时间对象方法使用2.练习ES6模板字符串3.函数封装:什么时候用 ? 发现某个代码逻辑在上下文某些地方重复出现;关注: 是否需要凌置形参 ? 调用的时侯我是否需要传入实参是否需要设置返回值 ? 调用的时候,是否需要返回一个数据! */</script>
3.3 时间戳
目标:能够获得当前时间戳
什么是时间戳
- 是指1970年01月01日00时00分00秒起至现在的毫秒数,它是一种特殊的计量时间的方式
 
三种方式获取时间:
- 使用 Date().now()
 
- console.log(Date.now())
 - 无需实例化
 - 但是只能得到当前的时间戳, 而前面两种可以返回指定时间的时间戳
 
案例:获取时间戳
<div id="time"></div><script>let fn = function () {let time1 = new Date()let time2 = new Date("2021-11-11 0:0:0");//2.得到时间戳let numb1 = +time1let numb2 = +time2// 3.时间戳:slet cha = (numb2 - numb1) / 1000;//天let day = Math.floor(cha / (24 * 60 * 60));//时:let hours = Math.floor(cha / 3600) % 24;//分let m = Math.floor(cha / 60) % 60;//秒:let s = Math.floor(cha) % 60;//如何设置显示在页面当中let div = document.getElementById('time');div.innerText = `我是秒男:${day}天-${hours}时-${m}分-${s}秒-马上秒射`;}fn();setInterval(fn, 1000);</script>
3.时间对象总结
目标:掌握时间对象,可以让网页显示时间
实例化时间对象
- new Date()
 
时间对象方法
- 时间对象里面的方法转换实际所用
 
时间戳
- date.getTime()
 - +new Date()
 - Date.now()
 - 重点记住 +new Date() 因为可以返回当前时间戳或者指定的时间戳
 
四、定时器函数
目标:能够使用定时器函数创建定时任务
学习路径:
- 定时器函数介绍
 - 定时器函数基本使用
 
4.1 定时器函数介绍
目标:能够说出定时器函数在开发中的使用场景
网页中经常会需要一种功能:每隔一段时间需要自动执行一段代码
例如:网页中的倒计时
要实现这种需求,需要定时器函数
4.2 定时器函数使用
目标:能够使用定时器函数重复执行代码
- 开启定时器
**setInterval**(函数,间隔时间)
 
- 作用:每隔一段时间调用这个函数
 - 间隔时间单位是毫秒
 
案例:毕业倒计时
- 关闭定时器
let 变量名 = setInterval(函数,间隔时间)
 
clearInterval(变量名)一般不会刚创建就停止,而是满足一定条件再停止
案例4.1:倒计时效果
// 需求:1.console 输出 123456let index = 0let fn = function () {index++console.log(index)}setInterval(fn,1000)//2.1-9当index数值10的时候,回到0,打印1let index = 0let fn = function () {index++;if (index == 10) {index = 1;}console.log(index)}setInterval(fn, 500)
案例4.2:网页轮播图效果
<img src="../代码/images/desktop_1.jpg" id="pic" width="50%">let index = 0;let fn = function () {index++;//1.index: 1-9if (index == 10) {index = 1;}//2.设置图片,找到图片,过去dom节点let img = document.getElementById('pic')//3.设置图片地址img.src = `../代码/images/desktop_${index}.jpg`}fn();setInterval(fn, 2000)
四、定时器函数小结
定时器函数有什么作用?
- 可以根据时间自动重复执行某些代码
 
定时器函数如何开启?
- setinterval(函数名, 时间)
 
- 定时器函数如何关闭?
let 变量名 = setInterval(函数,间隔时间)clearInterval(变量名)
 
案例4.3-定时器关闭
// 需求2:5s后重试let index = 5let timer;let fn = function () {index--;//1.获取DOMlet btn = document.getElementById("btn")// 2.设置文本字btn.innerText = `${index}s后重试`//3.判断当index 不能继续往下走,停止定时器;if (index == 1) {clearInterval(timer)}}timer = setInterval(fn, 1000);
