DOM文档对象模型
date
Jul 21, 2021
slug
javascript-dom
status
Published
tags
JavaScript
type
Post
summary
Dom文档对象模型
JS||DOM文档对象模型
@[toc]
文档
Table of Contents
- 1 Infrastructure
- 2 Events
- 3 Aborting ongoing activities
- 4 Nodes
- 4.1 Introduction to "The DOM"
- 4.2 Node tree
- 4.2.1 Document tree
- 4.2.2 Shadow tree
- 4.2.2.1 Slots
- 4.2.2.2 Slottables
- 4.2.2.3 Finding slots and slottables
- 4.2.2.4 Assigning slottables and slots
- 4.2.2.5 Signaling slot change
- 4.2.3 Mutation algorithms
- 4.2.4 Mixin
NonElementParentNode
- 4.2.5 Mixin
DocumentOrShadowRoot
- 4.2.6 Mixin
ParentNode
- 4.2.7 Mixin
NonDocumentTypeChildNode
- 4.2.8 Mixin
ChildNode
- 4.2.9 Mixin
Slottable
- 4.2.10 Old-style collections:
NodeList
andHTMLCollection
- 4.3 Mutation observers
- 4.3.1 Interface
MutationObserver
- 4.3.2 Queuing a mutation record
- 4.3.3 Interface
MutationRecord
- 4.3.4 Garbage collection
- 4.4 Interface
Node
- 4.5 Interface
Document
- 4.6 Interface
DocumentType
- 4.7 Interface
DocumentFragment
- 4.8 Interface
ShadowRoot
- 4.9 Interface
Element
- 4.10 Interface
CharacterData
- 4.11 Interface
Text
- 4.12 Interface
CDATASection
- 4.13 Interface
ProcessingInstruction
- 4.14 Interface
Comment
- 5 Ranges
- 7 Sets
- 8 XPath
其实就三部分,
NODE
EVENT
RANGES
其中
ranges
不常用主要关注
event
和node
1 event
1.1 查找节点
1.2 获取属性和设置属性
- 属性
- 显示:src class……
- 隐式:相对高度,滚动条高度……
- api看文档
1.3 绑定事件
on+事件绑定
怎么取消绑定?
这样有什么问题呢?
一个事件只能绑定一个函数,如果大项目,一个事件可能绑定多个函数,这样就错了
虽然函数是一个对象,里面也能套函数,这样也可以实现很多功能,但是场景是这样的:给你一个别人的项目,也根本不知道他前面写了啥,也懒得看,现在要增加一个新的功能,绑定事件,直接obclick = function,可能就把别人的代码给覆盖了
addEventListener
可以绑定多个事件,绑定多个函数
取消绑定的方法:
removeEventListener
1.4 事件捕获和事件冒泡
- 事件冒泡是从从被点击的元素中找是不是有注册事件的函数
- 通过
event.stopPropagation()
阻止 - 冒泡是一种机制,有些场景需要关闭冒泡
- 事件捕获是从
html
body
这些标签开始找被注册事件的函数 - 默认关闭,如果开启
addEventListener
的第三个参数设置成true就好了
1.5 事件对象
绑定函数的第一个参数
有些事件仅仅触发是不够的,我们还需要知道他的信息,通过event就能获取到事件触发对象的坐标等基本信息