Node
Node 是一个接口,各种类型的 DOM API 对象会从这个接口继承。它允许我们使用相似的方式对待这些不同类型的对象;比如,继承同一组方法,或者用同样的方式测试。
以下接口都从 Node 继承其方法和属性:
::: tip 备注:
Document Element Attr CharacterData Text
Comment ProcessingInstruction DocumentFragment DocumentType
:::
从其父类型 EventTarget 承属性。
EventTarget > Node
Node 属性
baseURI 只读
Node.baseURI 是只读属性,返回一个节点的绝对基址 URL。
document.baseURI; // 'https://developer.mozilla.org'
childNodes 只读
Node.childNodes 返回包含指定节点的子节点的集合
document.childNodes; // NodeList(2) [<!DOCTYPE html>, html]
firstChild 只读
Node.firstChild 只读属性返回树中节点的第一个子节点
document.childNodes; // <!DOCTYPE html>
isConnected 只读
如果该节点与 DOM 树连接则返回 true, 否则返回 false。例如:Document 对象与一般 DOM 树连接,ShadowRoot 与 shadow DOM 连接。
document.childNodes; // true
lastChild 只读
返回当前节点的最后一个子节点。
document.lastChild; // html
nextSibling 只读
返回其父节点的 childNodes 列表中紧跟在其后面的节点,如果指定的节点为最后一个节点,则返回 null。
document.nextSibling; // null
document.head.nextSibling; // body
nodeName 只读
返回当前节点的节点名称
document.nodeName; // '#document'
nodeType 只读
只读属性 Node.nodeType 表示的是该节点的类型。
document.nodeType; // 9
nodeValue
Node 的 nodeValue 属性返回或设置当前节点的值。对于文档节点来说,nodeValue 返回 null. 对于 text, comment,和 CDATA 节点来说,nodeValue 返回该节点的文本内容. 对于 attribute 节点来说,返回该属性的属性值。
document.nodeValue; // null
ownerDocument 只读
只读属性会返回当前节点的顶层的 document 对象。
document.body.ownerDocument; // #document
parentElement
返回当前节点的父元素节点,如果该元素没有父节点,或者父节点不是一个 DOM 元素,则返回 null。
document.body.parentElement; // #html
parentNode
返回指定的节点在 DOM 树中的父节点。
document.body.parentNode; // #html
previousSibling
返回当前节点的前一个兄弟节点,没有则返回 null.
document.body.parentNode; // #html
textContent
Node 接口的 textContent 属性表示一个节点及其后代的文本内容。
document.textContent; // null
Node 方法
appendChild()
Node.appendChild() 方法将一个节点附加到指定父节点的子节点列表的末尾处。
element.appendChild(aChild);
cloneNode()
Node.cloneNode() 方法返回调用该方法的节点的一个副本。
var dupNode = node.cloneNode(deep);
compareDocumentPosition()
Node.compareDocumentPosition() 可以比较当前节点与任意文档中的另一个节点的位置关系。 返回值是一个具有以下值的位掩码:
1 不在同一文档中 2 otherNode 在 node 之前 4 otherNode 在 node 之后 8 otherNode 包含 node 16 otherNode 被 node 包含 32 待定
compareMask = node.compareDocumentPosition(otherNode);
contains()
contains() 返回一个布尔值,表示一个节点是否是给定节点的后代,即该节点本身、其直接子节点(childNodes)、子节点的直接子节点等。
contains(otherNode);
getRootNode()
getRootNode() 方法返回上下文中的根节点,如果 shadow DOM 可用,则对 shadow DOM 同样适用。
var root = node.getRootNode(options);
hasChildNodes()
hasChildNodes 方法返回一个布尔值,表明当前节点是否包含有子节点.
element.hasChildNodes();
insertBefore()
Node.insertBefore() 方法在参考节点之前插入一个拥有指定父节点的子节点。
var insertedNode = parentNode.insertBefore(newNode, referenceNode);
isDefaultNamespace()
isDefaultNamespace 接受一个命名空间 URI 作为参数,如果该命名空间是当前节点的默认命名空间,则返回 true,否则返回 false.
result = node.isDefaultNamespace(namespaceURI);
isEqualNode()
Node.isEqualNode() 方法可以判断两个节点是否相等。
var isEqualNode = node.isEqualNode(otherNode);
normalize()
Node.normalize() 方法将当前节点和它的后代节点”规范化“(normalized)。
element.normalize();
removeChild()
Node.removeChild() 方法从 DOM 中删除一个子节点。返回删除的节点。
let oldChild = node.removeChild(child);
replaceChild()
Node.replaceChild() 方法用指定的节点替换当前节点的一个子节点,并返回被替换掉的节点。
replaceChild(newChild, oldChild)
事件
selectstart
Selection API (en-US) 的 selectstart 事件在用户开始一个新的选择时候触发。 如果事件被取消,选择将不被触发。
document.addEventListener(
"selectstart",
function () {
console.log("Selection started");
},
false
);
参考链接
MDN 官网:https://developer.mozilla.org/zh-CN/docs/Web/API/Node