一,节点操作
1,什么是节点操作
页面中的所有内容,都是节点,通过获取节点,可以操作文档中的内容
另一中 DOM 操作的方式
多用于克隆 和 向页面中写入标签
2,获取节点的方式 12个
标签对象.childNodes 获取子级所有的节点
标签对象.children 获取子级的元素节点标签节点
标签对象.firstChild 获取第一个子级节点
标签对象.lastChild 获取最后一个子级节点
标签对象.firstElementChild 获取第一个子级元素节点
标签对象.lastElementChild 获取最后一个子级元素节点
标签对象.previousSibling 获取上一个兄弟节点
标签对象.nextSibling 获取下一个兄弟节点
标签对象.previousElementSibling 获取上一个兄弟元素节点
标签对象.nextElementSibling 获取下一个兄弟元素节点
标签对象.parentNode 获取直接父级节点
标签对象.attributes 获取所有的属性节点
3,节点的类型,节点的名称,节点的内容
节点的类型: 标签对象.nodeType
元素节点 : 1
属性节点 : 2
文本节点 : 3
注释节点 : 8
节点的名称: 标签对象.nodeName
元素节点 : 标签名称,大写
属性节点 : 属性名,小写
文本节点 : #text
注释节点 : #comment
节点的内容: 标签对象.nodeValue
元素节点 : null
属性节点 : 属性值
文本节点 : 文本内容
注释节点 : 注释内容
4,节点操作
创建: 创建的是一个标签对象
元素节点:
var ele = document.createElement('标签名称')
创建元素节点之后,可以通过标签对象本身的属性来进行操作
ele.id = 属性值
ele.ClassName = 属性值
也可以通过 setAttribute() 来设定属性和属性值
文本节点
var ele = document.createTextNode('标签名称')
删除: 删除当前标签中的子级节点
标签对象.removeChild('你要删除的节点')
克隆:
标签对象.cloneNode() 只克隆标签本身
标签对象.cloneNode(true) 克隆标签本身和标签内容
写入:
在当前标签末位,添加节点
标签对象.appendChild('要写入的标签')
在当前标签,某个子级标签之前,添加节点
标签对象.insertBefore('要写入的标签' , 要写在哪个子级节点之前)
一.节点操作
基本概念
复制标签,会使用克隆方法
写入标签时,会使用节点操作方法
什么是节点?
整个的HTML文件,其中的所有内容,都视为HTML文件的一个节点对象
可以通过操作这些节点对象,来操作HTML文件
起始节点操作,就是另一种 DOM 操作,也是获取对象,操作对象
只是节点操作,比 DOM 操作,更加复杂更加丰富
节点的类型
之前的 DOM 操作,只能获取标签对象
现在的 节点 操作,可以获取标签对象,可以获取内容对象,可以获取属性对象,甚至可以获取注释内容
通过节点,获取的对象,和通过 DOM方法获取的对象,实际上,是相同意义上的对象
关键一点: 不管是 DOM方式 还是 节点方式 获取的标签对象,内容可能不同,形式是完全一致的
DOM方式 获取的标签对象,支持节点操作
节点方式 获取的节点对象,支持DOM操作
只要正确的获取对象,之后想怎么操作,怎么操作
二.节点操作之获取节点对象
var oDiv = document.querySelector('div');
console.log( oDiv.childNodes );
console.log( oDiv.children );
console.dir( oDiv.firstChild );
console.dir( oDiv.lastChild );
console.dir( document.querySelector('span') );
console.log( oDiv.firstElementChild );
console.log( oDiv.lastElementChild );
console.log( oDiv.previousSibling );
console.log( oDiv.nextSibling );
console.log( oDiv.previousElementSibling );
console.log( oDiv.nextElementSibling );
console.log( oDiv.parentNode );
console.log( document.querySelector('span').parentNode );
console.log( oDiv.attributes );
三.节点操作之类型名称内容
节点的类型,名称,内容
节点的类型: 对象.nodeType 属性中存储,数据是 一个数值
元素节点/标签节点 : 1
属性节点 : 2
文本节点 : 3
注释节点 : 8
节点的名称: 对象.nodeName
元素节点/标签节点 : 大写字母的 标签名称
属性节点 : 小写字母的 属性名称
文本节点 : #text
注释节点 : #comment
节点的内容: 对象.nodeValue
元素节点/标签节点 : null
属性节点 : 属性的属性值
文本节点 : 文本内容,包括换行和空格
注释节点 : 注释内容,包括换行和空格
四.节点操作之 新增、删除、克隆、写入
<div>我是建立的div标签</div>
<script>
节点的操作
节点的 新增 删除 克隆 写入
节点的创建
创建标签节点: document.createElement('标签名称');
创建的是一个标签对象
之前是设定字符串,写入HTML文件,浏览器执行为标签效果
创建文本节点: document.createTextNode('要创建的文本内容');
var oDiv = document.createElement('div');
oDiv.id = 'div1';
oDiv.setAttribute('index' , 1);
console.dir(oDiv);
var oText = document.createTextNode('要创建的文本内容');
console.log(oText);
删除节点 删除当前标签中的子级节点
当前标签.removeChild('你要删除的节点')
克隆节点 克隆复制当前节点对象
只克隆标签本身 当前标签.cloneNode();
克隆标签以及标签内容 当前标签.cloneNode(true);
写入节点
当前标签.appendChild(你要写入的标签对象) 在当前标签结束位置写入
当前标签.insertBefore(你要写入的标签对象 , 在哪个子级标签前) 在当前标签,子级标签之前,写入
一个标签对象,只会出现在最后一次写入的位置
相对对于将一个标签对象,多次写入,从上一个位置,会移动到下一个位置
只会出现在最后一个位置
var d = document.querySelector('div');
d.appendChild(oText);
d.insertBefore(oDiv , d.firstChild);
d.appendChild(oDiv);