节点层次
所有节点以文档节点为根节点形成树形结构
文档节点只有一个子节点,即HTML元素
HTML中文档元素只有HTML元素,XML中任何元素都可能是文档元素
Node类型
DOM1级定义了一个Node接口,所有节点都实现了这个接口。
一共有12种,所有节点类型都来自这12种。
由于IE没有公开Node类型的构造函数,所以判断是哪种类型时最好判断数字值。
if(someNode.nodeType==1){ //适用于所有浏览器
alert("Node is an element")
}
在IE中将Nodelist转换为数组,必须手动枚举成员
function convertToArray(nodes){
var array =null;
try{
arry=Array.prototype.slice.call(nodes,0); //针对非IE浏览器
}catch(ex){
array =new Array();
for(var i=0,len=nodes.length;i<len;i++){
array.push(nodes[i]);
}
}
return array;
}
因为关系指针都是只读的,所以DOM提供了一些操作节点的方法
appendChild(newNode) //元素最后加入节点
insertBefore(newNode,参照node) //参照node前加入节点,如果为null则在最后加
replaceChild(mewNode,oldNode) //替换节点
removeChild(oldNode) //移除节点
cloneNode(boolean) //复制节点,复制内容,不复制关系,true时深复制子节点
document类型
查找元素
document.getElementById()
document.getElementsByTagName()
document.getElementsByName()
DOM一致性检测
最好大多数情况下除了用以下方法外还进行能力检测
document.implementation.hasFeature(功能,版本)
文档写入
write() //写入内容包含外部文件则注意转义
writenln() //自动在字符串末尾加入 \n
open() //打开网页输出流
close() //关闭网页输出流
Element类型
判断tagName的时候先转换大小写
if(element.tagName.toLowerCase()=="div"){
//执行操作
}
取得特性
getAttribute()
公认特性下div.getAttribute(“id”)和div.id是一样的,
自定义特性div.special会取不到(IE除外,IE会创建),div.getAttribute(“special”)可以
所有浏览器自定义特性节点的specified的值为true
style属性:getAttribute()返回CSS文本,属性访问为对象;
onClick属性:getAttribute()返回代码字符串,属性访问为function;
设置特性
setAttribute()
属性定义的自定义特性用getAttribute()会取不到