操作节点
appendChild()用于向childNodes列表末尾添加一个节点,appendChild()返回新增的节点
var returnedNode=someNode.appendChild(newNode);
alert(returnedNode==newNode); //true
alert(someNode.lastChild==newNode); //true
如果传入到appendChild()中的节点已经是文档的一部分了,结果会将该节点从原来位置转移到新的位置
insertBefore()接受2个参数,要插入的节点和作为参照的节点,被插入的节点会变成参照节点前一个同胞节点,如果参照节点为null,则insertBefore()与appendChild()执行相同的操作
replaceChild()接收2个参数,要插入的节点和要替换的节点
removeChild()接收一个参数,即要移除的节点,被移除的节点将成为这个方法的返回值
要使用这几个方法必须先取得父节点,在不支持子节点的节点类型调用以上方法会导致错误发生
其它方法
有2个方法是所有节点都有的,一个是cloneNode(),创建调用这个方法的节点完全相同的副本,它接收一个布尔值参数,true表示深复制,也就是复制节点及其整个子节点树,false执行浅复制,只复制节点本身,复制后返回的节点副本属于文档所有,但还要为其指定父节点添加到文档中
还有一个方法是normalize(),它用来处理文档树中的文本节点,将空文本节点删除,将两个相邻的文本节点合并为一个文本节点
Document类型
JavaScript通过Document类型表示文档,document对象是window对象的一个属性,可以作为全局对象来访问,Document节点具有以下特征:
nodeType的值为9;
nodeName的值为“#document”;
nodeValue的值为null;
parentNode的值为null;
ownerDocument的值为null;
document对象是HTMLDocument的实例
有2个内置的访问其子节点的快捷方式,第一个是documentElement属性,该属性始终指向HTML页面中的<html>元素,另一个就是通过childNodes列表访问文档元素,通过documentElement属性更快更直接
<html>
<body>
</body>
</html>
var html=document.documentElement; //取得对<html>的引用
alert(html===document.documentElement); //true
alert(html===document.firstChild); //true
作为HTMLDocument的实例,document对象还有一个body属性,直接指向<body>元素
var body=document.body; //取得对<body>的引用
所有浏览器都支持document.body和document.documentElement属性
Document另一个可能的子节点是DocumentType,通过doctype属性(document.doctype)来访问它的信息
var doctype=document.doctype; //取得对<!DOCTYPE>的引用
不同的浏览器对document.doctype支持差别很大