首页 > 代码库 > 对DOM操作的一些总结

对DOM操作的一些总结

一.DOM节点

  分为三大类:

1.元素节点 :<html>、<body>、<p>等标签

2.文本节点 :标签内的文本。例如<p>这就是文本节点</p>,里面的“这就是文本节点”这段文字就是一个文本节点。

:Chrome、opera等浏览器中,把节点与节点之中的空白符(即空格)也视为文本节点。如下面代码中ul标签有5个子节点,两个li元素,三个空白符

1 <ul>  <!--空白-->
2     <li></li>  <!--空白-->
3     <li></li>  <!--空白-->
4 </ul>

3.属性节点 :标签的属性。如a标签中的href,img中的src,input中的type......

 例:

<a href="http://www.baidu.com">hello</a>

 a为元素节点,href="http://www.baidu.com"为属性节点,hello为文本节点。

二.DOM操作方法

例:

<div id="d">
    <p><span>haha</span></p>
  <a name="alink" id="aa">标签1</a>
  <a name="alink2" id="aaa">标签2</a>
  <input name="alink" />
</div>

二.元素获取方法

1.通过元素ID属性获取

var odiv=document.getElementById("d");

 传入id属性的值,返回所获元素且所获元素唯一

2.通过元素标签的名称获取

var a=document.getElementsByTagName("aa");

:(1)一个页面中可能存在不止一个该标签,所以返回的是一个数组(注意方法名中的‘s’),具有length属性,索引从0开始。

(2)数组中的顺序为文档中的顺序。

(3)则例子中的第一个a标签该这样表示:document.getElementsByTagName("aa")[0];

3.通过元素name属性的值获取

var input=document.getElementsByName("alink");

:同上一个方法一样返回一个数组,具有length属性,索引从0开始,顺序为文档中的顺序。

 三.创建节点方法

4.创建一个元素节点

var div=document.createElement("div");

传入所要创建的元素名,并返回所创元素对象。

5.创建一个文本节点

var txt=document.createTextNode("This is new text");

传入文本内容来创建,并返回该文本节点内容。

 

:以下方法属性都要依附于某个指定节点进行调用

 

7.(为指定节点)创建一个属性节点和设置属性值

var a=doucument.getElementById("aa");
a.setAttribute("name","link");

var odiv=document.getElementById("d");
odiv.setAttribute("name","odiv");

:(1)给元素节点现有的属性设定为指定的值

(2)若该属性不存在,则为此节点创建该新属性。

四.DOM节点属性

8.获取属性值

var a=document.getElement("aa");四
a.getAttribute("name");//=alink

传入属性名称,返回指定节点的属性值。

9.获取子节点

var odiv=document.getElementById("d");
var node=odiv.childNodes;

获取指定元素下的所有子节点的列表,返回一个数组,具有length属性。

10.获取第一个子节点

var firstnode=odiv.firstChild;//odiv.childNode[0]

获取指定元素的子节点列表中的第一个节点

11.获取最后一个子节点

var lastnode=odiv.lastchild;//odiv.childNode[odiv.childNode.length-1]

获取指定元素的子节点列表中的最后一个节点

12.获取父节点

var span=document.getElementsByTagName("span")[0];
var parent=span.parentNode;// P 父节点
var Parent=span.parentNode.parentNode;// DIV 祖节点

获取指定节点的父节点或祖节点(唯一)

13.获取兄弟节点

var a=document.getElementById("aa");
var next=a.nextSibling;//  A   返回指定节点之后紧跟的节点
var pre=a.previousSibling;//   P    返回指定节点之前紧跟的节点

 若无此节点,则返回NULL

五.节点的插入与修改

14.在指定节点的子节点列表的最后一个节点之后添加一个新节点 

object.aapendChild(newnode)

 15.在指定节点的子节点列表中的某个节点之前插入一个新节点

object.insertBefore(newnode,node)

 16.删除指定节点的子节点列表中的某个节点

object.removeChild(node)

:(1)有返回值。若删除成功,返回该节点。若删除失败,则返回NULL。

(2)只是从DOM树中移除,还存在于内存中。若要完全删除,给返回值赋上null。

17.对指定节点的子节点列表的某个节点替换

object.replaceChild(newnode,oldnode)

:有返回值。返回被替换节点对象(oldnode)的引用,但与该节点相关的属性内容都将被移除。

//创建新元素节点
var newnode=document.createElement("p");
newnode.innerHTML="new p";
//创建新文本节点
var newtext=document.createTextNode("this is new text");
var odiv=document.getElementById("d");
var oldNode=document.getElementById("aa");
var oldnode1=document.getElementById("aaa");
//在列表最后插入新节点
odiv.appendChild(newtext);
//在列表某节点之前插入新节点
odiv.insertBefore(newnode,oldNode);
//替换列表中的某节点
odiv.replaceChild(newnode,oldnode1);
//删除列表中的某节点
odiv.removeChild(oldNode);

 

总结:

(1)方法属性名区分大小写;

(2)都有返回值,返回获取,被创建,被删除,被替换的节点对象;

(3)传入参数,除变量名外都要加引号

对DOM操作的一些总结