DOM基础
- Dom节点
- 父节点 parentNode
2. 子节点
children - 只有元素节点
childNodes - 所有节点=元素+文本+注释+…
常用节点类型 .nodeType
1 - document.ELEMENT_NODE
3 - document.TEXT_NODE
8 - document.COMMENT_NODE
9 - document.DOCUMENT_NODE
document 是html元素的父级
兄弟节点
1. 前一个兄弟元素节点
需要处理兼容
高版本 previousElementSibling 低版本 previousSibling
const s = s.previousElementSibling || s.previousSibling;
2. 下一个兄弟元素节点
高版本 nextElementSibling 低版本 nextSibling
const s = s.nextElementSibling || s.nextSibling;
- Dom操作
1. 创建
创建元素节点
document.createElement
创建文本节点
document.createTextNode()
创建注释节点
document.createComment
目的是 现在可能是一个占位符,将来会替换成真正的节点
创建其他标准之下的元素
document.createElementNS
如:SVG
2. 加入
添加到末尾
父.appendChild(元素)
插入到xx之前
父.insertBefore(元素, 谁的前面)
3.替换
父.replaceChild(新元素, 替换的元素)
4.删除
父.removeChild(元素)
- 文档碎片
插入多个元素 不会需要一个元素包裹
提升性能优势
const box = document.getElementById('box');
// 创建一个文档碎片
const frag = document.createDocumentFragment();
const h1 = document.createElement('h1');
h1.innerText = '这是一个H1';
const h2 = document.createElement('h2');
h2.innerText = '这是一个H2';
const h3 = document.createElement('h3');
h3.innerText = '这是一个H3';
frag.appendChild(h1);
frag.appendChild(h2);
frag.appendChild(h3);
box.appendChild(frag);
- Dom属性
- 编译Dom节点
- vDom