前端:JavaScript-Web-Api DOM

JavaScript 的组成

组成部分说明
Ecmascript描述了该语言的语法和基本对象
DOM描述了处理网页内容的方法和接口
BOM描述了与浏览器进行交互的方法和接口

一、DOM

DOM 是用来动态修改 HTML 的,其目的是开发网页特效及用户交互。

DOM 节点

节点是文档树的组成部分,每一个节点都是一个 DOM 对象,主要分为元素节点、属性节点、文本节点等。

【元素节点】其实就是 HTML 标签,如上图中 headdivbody 等都属于元素节点。

【属性节点】是指 HTML 标签中的属性,如上图中 a 标签的 href 属性、div 标签的 class 属性。【文本节点】是指 HTML 标签的文字内容,如 title 标签中的文字。

【根节点】特指 html 标签。

(1)获取DOM对象

根据ID获取:getElementById()、根据标签名获取:getElementsByTagName()、根据name获取:getElementsByName()、根据类名获取:getElementsByClassName()、选择器获取:querySelector() 、querySelectorAll()

(2)操作元素内容

innerText 将文本内容添加/更新到任意标签位置,文本中包含的标签不会被解析。

innerHTML 将文本内容添加/更新到任意标签位置,文本中包含的标签会被解析。

(3)控制样式属性

通过修改行内样式 style 属性,实现对样式的动态修改。

操作类名(className) 操作CSS

通过 classList 操作类控制CSS

(4)自定义属性

在html5中推出来了专门的data-自定义属性,在标签上一律以data-开头。

在DOM对象上一律以dataset对象方式获取。

(5)间歇函数

setInterval 是 JavaScript 中内置的函数,它的作用是间隔固定的时间自动重复执行另一个函数,也叫定时器函数。

(6)事件:

①事件监听:获取 DOM 元素——>通过 addEventListener 方法为 DOM 节点添加事件监听 ——>   等待事件触发,如用户点击了某个按钮时便会触发 click 事件类型—— >事件触发后,相对应的回调函数会被执行.

②事件类型:

鼠标事件:   click 代表鼠标单击       &&      dblclick 代表鼠标双击

`mouseenter 监听鼠标是否移入 DOM 元素   &&    `mouseleave 监听鼠标是否移出 DOM 元素

focus 获得焦点        &&       blur 失去焦点

键盘事件:keydown 键盘按下触发         &&       keyup 键盘抬起触发

(7)事件对象(e):

ev.type 当前事件的类型         ev.clientX/Y 光标相对浏览器窗口的位置

ev.offsetX/Y 光标相于当前 DOM 元素的位置

(8)this:

①this 本质上是一个变量,数据类型为对象②函数的调用方式不同 this 变量的值也不同

③【谁调用 this 就是谁】是判断 this 值的粗略规则④函数直接调用时实际上 window.sayHi() 所以 this 的值为 window

(9)回调函数:

如果将函数 A 做为参数传递给函数 B 时,我们称函数 A 为回调函数。

(10)事件流:

如果事件是在冒泡阶段执行的,我们称为冒泡模式,它会先执行子盒子事件再去执行父盒子事件;

如果事件是在捕获阶段执行的,我们称为捕获模式,它会先执行父盒子事件再去执行子盒子事件。

addEventListener 第3个参数决定了事件是在捕获阶段触发还是在冒泡阶段触发

addEventListener 第3个参数为 true 表示捕获阶段触发,false 表示冒泡阶段触发,默认为 false

事件流只会在父子元素具有相同事件类型时才会产生影响

绝大部分场景都采用默认的冒泡模式(其中一个原因是早期 IE 不支持捕获)

阻止冒泡:事件对象中的 ev.stopPropagation 方法,专门用来阻止事件冒泡。

(11)其他事件:

页面加载事件:window.addEventListener('load', function() { // xxxxx})

元素滚动事件:window.addEventListener('scroll', function() {  // xxxxx})

页面尺寸事件:window.addEventListener('resize', function() {// xxxxx})

(12)日期:

getFullYear 获取四位年份

getMonth 获取月份,取值为 0 ~ 11

getDate 获取月份中的每一天,不同月份取值也不相同

getDay 获取星期,取值为 0 ~ 6

getHours 获取小时,取值为 0 ~ 23

getMinutes 获取分钟,取值为 0 ~ 59

getSeconds 获取秒,取值为 0 ~ 59

时间戳:获取时间戳的方法,分别为 getTime 和 Date.now 和 +new Date()

(13)DOM节点:

createElement 动态创建任意 DOM 节点

cloneNode 复制现有的 DOM 节点,传入参数 true 会复制所有子节点

appendChild 在末尾(结束标签前)插入节点

insertBefore 在父节点中任意子节点之前插入新节点

removeChild 删除节点时一定是由父子关系。

childNodes 获取全部的子节点,回车换行会被认为是空白文本节点

children 只获取元素类型节点

parentNode 获取父节点,以相对位置查找节点,实际应用中非常灵活。

previousSibling 获取前一个节点,以相对位置查找节点,实际应用中非常灵活。

nextSibling 获取后一个节点,以相对位置查找节点,实际应用中非常灵活。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IsLuNaTiC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值