Skip to content
此页目录
本文总阅读量

JavaScript 获取节点,操作节点

获取节点

父节点.childNodes 获取子节点(包含一切节点)

js
p.nodeType == 1// true 判断是否存在节点 是不是一个元素 
// 1 元素节点 2 属性节点 3 文本节点

p.nodeName
// #text 文本节点的名字
// P  元素节点的元素名 大写
// #comment 注释节点的名字

p.nodeValue // 文本节点的内容 
// 必须是文本节点,元素节点会返回 null

父元素.children 获取子节点 
// IE9+ 正常
// IE8-中 会获取 注释和元素节点

// 父节点
p.parentNode;// 获取直系父元素
p.offsetParent;// 获取上一个带有定位的父元素,position:stalic不算
/* 
兼容方法
  firstchild 都有值,firstElementChild IE 会 undefined
  短路运算 
  firstElementChild || firstchild;
*/

// 子节点 
p.firstChild;// 标准浏览器获取第一个 文本或换行 节点,IE 只获取第一个元素
p.firstElementChild;// 标准浏览器只获取第一个元素,IE 为 undefined
lastElementChild || lastChild; 最后一个子节点

// 兄弟节点
p.previousElementSibling || p.previousSibling;// 上一个兄弟节点
p.nextElementSibling || p.nextSibling;// 下一个兄弟节点

操作节点

js
// 新建节点
var li = document.createElement("p"); // 新建li元素
var text = document.createTextNode("wenben"); // 新建文本

// 插入节点
父节点.appendChild(li);// 父节点的末尾插入
父节点.insertBefore(li,参照子节点);// 在参照子节点前插入

// 替换节点 
  // 替换之前的文本依然还在 ,但它在文档中已经没了自己的位置
父节点.replaceChild(新节点,被替换的子节点);// 替换

// 删除节点 
  // 移除的节点仍然为文档所有,只不过没有了自己的位置
父节点.removeChild(子节点);// 删除子节点
节点.remove();// 自己删除自己

// 克隆节点
节点.cloneNode(false);// 默认:只复制本身空标签
节点.cloneNode(true);// 本身与所有子节点都复制

评论

交流群