原生JavaScript操作Dom结构:
对于DOM,我们要了解它的性质,这是针对HTML XML文档的一个API。它描绘了一个层次化的节点树,允许开发人员进行,增删改查。下面以一个HTML片段来说明DOM节点树。
<html> <head> <title></title> </head> <body> <div> <p></p> </div> </body> </html>
它描绘了一个层次化的节点树,以html为根,依次是[head,body][title,div][p]。理清关系,才能明白如何操作。
如何判断元素,在dom中Node对象定义了如何判断元素的属性,nodetype。
var a = document.getElementById("a"); if(a.nodetype == 1){ }
对于nodetype属性,它返回的值,分别代表了一些含义,比如1,返回的是元素。2返回的是Attr。3返回的是TEXT。在判断完a是否为元素,如果是,则可以使用nodename来返回它究竟是何元素标签。
在一段HTML片段中,我们如何获取它?
<html> <head></head> <body> <div id="de"> <a>1</a> <a>2</a> </div> </body> </html>
如果我们要获取id,var a = document.getElementById("de"); //返回一个对象
如果我们要获取id为de下的内容呢?var b = a.getElementsByTagName("a"); //返回一个数组
如果我们要添加一个新的a链接呢?var d = document.createElement(a); a.appendChild(d); //创建一个元素,添加到de这个div中
我们还可以动态的加载dom,一个比较简单的方式,document.write("<a><3/a>");
当我们需要改变或者添加属性时,可以:a.getAttribute("id"); a.setAttribute("title","de"); a.setAttribute("id","dell");
当我们需要遍历节点时,可以使用childNodes属性。
如果要查找某个具体的元素,还可以如此:var b = a.getElementsByTagName("a")[0];
总的来说,操作DOM,可以用document.getElementById、document.getElementsByTagName来查找元素,用getAttribute、setAttribute来修改属性或者添加新的属性,用document.createElement()、 document.createTextNode()方法来创建新的元素节点与文本节点,用Node.appendChild() Node.insertBefore() Node.replaceChild()来添加到文档。用nodetype来判断是否为元素,nodename nodevalue来返回是什么类型的html 节点片段。
深入的了解,这里建议参阅《JavaScript权威指南第五版》、《JavaScript高级程序设计第二版》。