Skip to content

DOM操作

选中DOM元素

基于ID

js
let element=document.getElementById("elementId");

基于类名

js
let elements=document.getElementsByClassName("className");

基于标签名

js
let elements=document.getElementsByTagName("tagName");

基于选择器

js
// 第一个匹配的
let element=document.querySelector('cssSelector');

// 所有匹配的
let elements=document.querySelectorAll('cssSelector');

通过元素的name属性

js
let elements = document.getElementsByName("name");

查找最近的祖先元素(包括自身)closest()

js
let element = childElement.closest("CSSSelector");

父子关系parentElement / children / firstElementChild / lastElementChild

  • 获取父元素:parentElement
js
let parent = childElement.parentElement;
  • 获取所有子元素(不包括文本节点):children
js
let children = parentElement.children;
  • 获取第一个子元素:firstElementChild
js
let firstChild = parentElement.firstElementChild;
  • 获取最后一个子元素:lastElementChild
js
let lastChild = parentElement.lastElementChild;

添加元素

appendChild

将一个节点添加为某个父节点的最后一个子节点

js
parentNode.appendChild(newNode);

insertBefore

在某个指定的子节点之前插入一个新节点

js
parentNode.insertBefore(newNode, referenceNode);

append

可以添加节点或文本,功能更灵活,不强制要求必须是节点

js
parentNode.append(newNode);  // 或者 parentNode.append("Some text");

移除元素

removeChild

从父节点中移除一个子节点

js
parentNode.removeChild(childNode);

remove

直接删除一个元素

js
element.remove();

移动元素

本质是先移除后添加:通过 appendChild 或 insertBefore 将一个已经存在的节点从一个位置移动到另一个位置,它会自动从原位置移除并添加到新位置

js
newParent.appendChild(existingChild);  // existingChild 将从原父节点中移除并添加到 newParent 中

复制元素

cloneNode:复制一个节点,可以选择是否深度复制(包括子节点)

js
// 深度复制,包括子元素
let deepClone = node.cloneNode(true);

// 浅复制,不包括子元素
let shallowClone = node.cloneNode(false);

创建元素

createElement

创建一个新元素节点

js
let newElement = document.createElement("div");

createTextNode

创建一个文本节点

js
let textNode = document.createTextNode("Hello World");

替换元素

replaceChild:将一个子节点替换为另一个节点

js
parentNode.replaceChild(newNode, oldNode);