1、创建节点createElement()、setAttribute()、createTextNode()
创建元素节点:
语法: document.createElement("标签名称")
创建属性节点或更改属性节点的值:
语法:元素节点.setAttribute("属性名",‘属性值 )
创建文本节点:
语法:document.createTextNode("文本内容")
以上三种创建的节点都存在内存中,我们还要通过appendChild()或insertBefore()把它插到页
面中去。
eg:var odiv=document.createElement("div");//创建一个div
document.body.appendChild(odiv);//把创建好的div放到页面中
odiv.setAttribute("class","tag");//给div添加名为tag的类名
odiv.setAttribute("class","div1");//给div的类名改成div1
var otext= document.createTextNode("我是一个div");//创建一个文本节点。
odiv.appendChild(otext);//给div添加文本节点
2、 插入节点:appendChild()和insertBefore() 此两种方法都是父级调用
语法:父节点.appendChild("新节点")
作用:把新节点添加到父节点里,放到最后。
语法:老节的父节点.insertBefore("新节点","老节点");
作用:把新节点插到老节点的前面。
3、替换节点:replaceChild()此方法由父级调用
语法:老节点的父节点.replaceChild("新节点",“老节点”)
作用:用新节点替换老节点。
4、删除节点:removeChild()也是由父节点调用
语法:父节点.removeChild(子 节点)
作用:把子节点从父节点中删除,返回删除的节点
5、克隆节点:cloneChild()
语法:节点.cloneChild(true/false)
参数:默认为false,只复制当前节点,为true时它的所有子节点也一起复制。
它也是存在内存中,也需要向页面里添加。
6、判断节点:hasChildNode()
语法:节点.hasChildNode()
作用:判断节点是否包含子节点,包含返回true,不包含返回false.
js操作dom是一个很耗性能的过程,在某些情况下,不得不进行dom循环操作,我们每次对dom的操作都会触发"重排",这严重影响到能耗,一般通常采取的做法是尽可能的减少dom操作来减少"重排"。
面对循环操作dom的过程,我们选择使用文档碎片(creatDocumentFragment),将需要添加到dom中的内容都添加到文档碎片中,然后一次性的将文档碎片添加到dom树,这样就可以有效的减少操作dom的次数,减少重排的发生。