DOM参考手册

了解:

    DOM可以以一种独立于平台和语言的方式访问和修改一个页面文档的内容和结构,是表示和处理HTML或XML文档的常用方法。DOM实际上是以面向对象方式描述文档模型,定义了表示和修改文档所需的对象,这些对象的行为和属性以及这些对象之间的关系。DOM将整个页面映射为一个由层次节点组成的文件,使用DOM可以让页面动态的变化。

    DOM主要由三个部分构成:

(1)Core DOM:定义了一套标准的针对任何结构化文档的对象。

(2)XML DOM:定义了一套标准的针对XML文档的对象。

(3)HTML DOM:定义了一套标准的针对HTML文档的对象。

由于HTML是按照XML规范重新定义的HTML,所以DOM的这三部分都适用HTML。

1、节点树

DOM把HTML文档中的每个成分都定义成了一个节点。包括

  1. 整个文档是一个文档节点。
  2. 每个HTML标签是一个元素节点。
  3. 包含在HTML标签中的文本(内容)是文本节点。
  4. HTML标签的每一个属性是一个属性节点。
  5. 注释属于注释节点。

HTML文档的所有节点组成了一个节点树(或者文档树),HTML文档的每个元素、属性和内容文本等代表树中的一个节点,树起始于文档节点,并由此继续延伸,直到所有的文本节点。

一棵节点数中的所有节点彼此间都有等级和层次关系。

  1. 除文档节点之外的每个节点都有父节点。
  2. 大部分元素节点都有子节点。
  3. 当节点共享同一个父节点时,它们就是同辈(同级节点)。
  4. 节点也可以拥有后代,后代指某个节点的所有子节点,或者这些子节点的子节点。
  5. 节点也可以拥有先辈,先辈是某个节点的父节点,或者父节点的父节点。

2、DOM节点

   DOM是一组对象的集合,通过对象特定的属性和方法可以操作这些对象。在实际应用中,主要使用的DOM对象是Node对象、HTML Element对象、HTMLDocument对象和HTMLDOM对象。

(1)、Node对象

Node对象常用属性
属性描述 
nodeType显示节点的类型元素:1;属性:2;文本:3;注释:8;文档:9;
nodeName显示节点的名称元素节点值:标签名称;属性节点值:属性名称;文本节点值:#text;文档节点值:#document;
nodeValue显示节点的值文本节点文本内容;属性节点属性值;文档节点和元素节点不可用。
attributes所有属性节点的集合(数组) 
firstChild表示某一个节点的第一个子节点 
lastChild表示某一个节点的最后一个子节点 
childNodes表示所在节点的所有子节点 
parentNode表示所在节点的父节点 
nextSibling紧挨着当前节点的下一个节点 
previousSibling紧挨着当前节点的上一个节点 
Node对象的主要方法
方法描述
hasChildNodes()判定一个节点是否有子节点,有返回true,没有返回false
removeChild()去除一个节点
appendChild()添加一个节点,如果文档树中已经存在该节点,则将它删除,然后在新位置插入
replaceChild()从文档树中删除(并返回)指定的子节点,用另一个节点来替换它
insertBefore()在指定节点的前面插入一个节点,如果已经存在,则删除原来的,然后在新位置插入
cloneNode()复制一个节点,该方法有一个参数,true表示同时复制所有的子节点,false表示仅复制当前节点

(2)、HTMLElement对象

       HTMLElement对象表示HTML文档中的任意元素,是HTML DOM的基本对象,提供HTML元素对象的通用属性和方法。HTMLElement对象继承了Node和Element对象的标准属性。

HTMLElement对象非标准属性
属性描述
className规定元素的class属性
id规定元素的id属性
style返回为当前元素设置内联样式的style属性对象
currentStyle一个currentStyle对象 ,表示页面中所有样式声明按CSS层叠规则作用于元素的最终样式
title规定元素的title属性
innerHTML规定元素标签对之间的所有HTML代码
outerHTML规定元素完整的HTML代码,包括innerHTML和元素自身标签
offsetHeight、offsetWidth返回元素的高度和宽度,单位:像素,类型:int
offsetLeft返回当前元素的左边界到它的包含元素的左边界的偏移量 ,单位:像素,类型:int
offsetTop返回当前元素的上边界到它的包含元素的上边界的偏移量,单位:像素,类型:int
scrollHeight、scrollWidth当一个元素拥有滚动条时,返回元素的完整的高度和宽度,单位:像素,类型:int
scrollTop、scrollLeft返回已经滚动到元素的左边界或上边界的像素数。只有在元素有滚动条的时候才有用。单位:像素,类型:int
offsetParent返回对最近的动态定位的包含元素的引用,所有的偏移量都根据该元素来决定,如果该元素的样式属性display设置为none,则该属性返回null

(3)、HTMLDocument对象

HTMLDocument对象表示HTML文档树的根。在BOM和HTML DOM中被称为Document对象。

常用HTMLDocument对象集合
集合描述
all[]文档中所有HTML元素
styleSheets[]文档中所有样式表对象的集合,包含内部和外部样式
常用HTMLDocument对象属性
属性描述
body返回对<body>元素对象的引用
documentElement返回对<html>元素对象的引用

 

常用HTMLDocument对象方法
方法描述
getElementById()返回拥有指定id的第一个对象
getElementsByName()返回带有指定名称的对象集合
getElementsByTagName()返回带有指定标签名的对象集合

3、DOM与CSS

(1)Style对象

Style对象代表一个单独的样式声明,可从应用样式的文档元素访问Style对象。使用Style对象属性的语法如下:

document.getElementById("id").style.property=value

Style对象获取的是内联样式,即元素标签中style属性的值,与CSS相对应。

Style对象中Background属性
属性描述
background在一行中设置所有的背景属性
backgroundAttachment设置背景图像是否固定或随页面滚动
backgroundColor设置元素的背景颜色
backgroundImage设置元素的背景图像
backgroundPosition设置背景图像的起始位置
backgroundRepeat设置是否及如何重复背景图像
Style对象Border和Margin属性
属性描述
border在一行设置四个边框的所有属性
borderBottom在一行设置底边框的所有属性
borderBottomColor设置底边框的颜色
borderBottomStyle设置底边框的样式
borderBottomWidth设置底边框的宽度
borderColor设置所有四个边框的颜色(可设置四种颜色)
borderLeft在一行设置左边框的所有属性
borderRight在一行设置右边框的所有属性
borderTop在一行设置顶边框的所有属性
borderWidth设置所有四个边框的宽度(可设置四种宽度)
borderStyle设置所有四个边框的样式(可设置四种样式)
margin设置元素的边距(可设置四个值)
marginBottom设置元素的底边距
marginLeft设置元素的左边距
marginTop设置元素的上边距
marginRight设置元素的右边距
padding设置元素的内边距或填充(可设置四个值)
paddingBottom设置元素的底内边距或底填充
paddingLeft设置元素的左内边距或左填充
paddingTop设置元素的上内边距或上填充
paddingRight设置元素的右内边距或右填充
Style对象的Layout属性
属性描述
clear设置在元素的哪边不允许其他的浮动元素
clip设置元素的形状
content设置元信息
cssFloat设置图像或文本将出现(浮动)在另一个元素中的何处
cursor设置显示的指针类型
direction设置元素的文本方向
display设置元素如何被显示
height设置元素的高度
maxHeight设置元素的最大高度
maxWidth设置元素的最大宽度
minHeight设置元素的最小高度
minWidth设置元素的最小宽度
overflow规定如何处理不适合元素盒的内容
verticalAlign设置对元素中的内容进行垂直排列
visiblity设置元素是否可见
width设置元素的宽度
Style对象的List属性
属性描述
listStyle在一行设置列表的所有属性
listStyleImage把图像设置为列表项标记
listStylePosition设置列表项标记的位置
listStyleType设置列表项标记的类型
Style对象的Positioning属性
属性描述
bottom设置元素的底边缘距离父元素底边缘的之上或之下的距离
left设置元素的左边缘距离父元素左边缘的左边或右边的距离
position把元素放置在static/relative/absolute/fixed的位置
right设置元素的右边缘距离父元素右边缘的左边或右边的距离
top设置元素的顶边缘距离父元素顶边缘的之上或之下的距离
zIndex设置元素的堆叠次序
Style对象的Table属性
属性描述
borderCollapse设置表格边框是否合并为单边框或者像在标准的HTML中那样分离
borderSpacing设置分隔单元格边框的距离
captionSide设置表格标题的位置
emptyCells设置是否显示表格中的空单元格
tableLayout设置用来显示表格单元格、行以及列的算法
Style对象的Text属性
属性描述
color设置文本的颜色
font在一行设置所有的字体属性
fontFamily设置元素的字体系列
fontSize设置元素的字体大小
fontSizeAdjust设置/调整文本的尺寸
fontStretch设置如何紧缩或伸展字体
fontStyle设置元素的字体样式
fontVariant用小型大写字母字体来显示文本
fontWeight设置字体的粗细
letterSpacing设置字符间距
lineHeight设置行间距
quotes设置在文本中使用哪种引号
textAlign排列文本
textDecoration设置文本的修饰
textIndent缩进首行文本
textShadow设置文本的阴影效果
textTransform对文本设置大写效果
whiteSpace设置如何设置文本中的折行和空白符
wordSpacing设置文本中的词间距

(2)、CurrentStyle对象

 CurrentStyle对象返回所有样式声明(包括内部、外部和内联)按CSS层叠规则作用于元素的最终样式,而Style对象只能返回通过标签style属性应用到元素的内联样式。只有IE和Opera支持使用CurrentStyle获取元素计算后的样式,其他浏览器不支持。标准浏览器中使用getComputedStyle()方法。

var mystyle=window.getComputedStyle("元素","伪类");
//第一个参数为要获取计算后的样式的目标元素
//第二个参数“伪类”是必须的(如果不需要伪类,则设置为null)
//只可读

getComputedStyle()与style的主要区别有:

(1)、getComputedStyle()是只读的,只能获取样式,不能设置;style能读能写;

(2)、getComputedStyle()获取的是最终应用在元素上的所有CSS属性对象(即使没有CSS代码);style只能获取style属性中的CSS样式。对于一个没有设定任何样式的元素,getComputedStyle()返回对象中的length属性值,而style对象中的length是0。

//兼容处理:

//兼容处理
//var op=document.getElementById("op");
//alert(getStyle(op).fontSize)
//处理方法
function getStyle(op){
   var ocurrentStyle=null;
   if(op.currentStyle){
      //兼容IE浏览器
      ocurrentStyle=op.currentStyle;
    }
   else{
      //兼容FF等标准浏览器
      ocurrentStyle=window.getComputedStyle(op,null);
    }
return ocurrentStyle;
}

(3)、StyleSheet对象

HTMLDocument对象的集合StyleSheets是StyleSheet对象的集合,每个StyleSheet对象表示文档中的独立样式表,即内部样式或外部样式。

StyleSheet对象常用属性
属性或方法描述
rules引用rule对象集合,包含样式表定义的所有样式规则。每个StyleSheet对象表示文档中的独立样式表,即内部样式或外部样式。
cssRules同rules
style引用一个样式对象,cssText属性表示样式声明
addRule(selector,style)添加样式规则。Selector是选择器 ,style是样式声明
insertRule(rule,index)插入样式规则。rule是样式规则,index是索引号
removeRule(index)删除指定索引号的样式规则

由于不同浏览器对StyleSheet对象支持有差异,因此在使用的StyleSheet对象时要做兼容处理

案例:

<head>
<style type="text/css">
   .btu{font-weight:900;}
</style>
<link id="sheet" rel="stylesheet" type="text/css" href="js(StyleSheet)1.css"/>
<script type="text/javascript">
//此部分处理
</script>
</head>  
<body>
 <p class="btu">清华大学</p>
 <button id="small">小字体</button>
 <button id="big">大字体</button>
</body>

JS部分:

window.onload=function(){
    //引用文档第一个样式表
    var oStyleSheet=document.styleSheets[0];
    //考虑兼容性
if(oStyleSheet.rules){
    //兼容IE
    oStyleSheet.addRule("a","text-align:center;");//添加样式规则
    /*其他操作*/
    var str="本页面第一个样式表定义了以下"+oStyleSheet.rules.length+"条样式规则:\n";
    for(var iCv=0;iCv<oStyleSheet.rules.length;iCv++){
        //依次访问每个样式规则
        var oRule=oStyleSheet.rules[iCv];//注意
        str+=oRule.selectorText+"{"+oRule.style.cssText+"}\n";
       }
    }
else{
    //兼容FF
    var sRule="a{text-align:center;}";
    var iIndex=oStyleSheet.cssRules.length;
    oStyleSheet.insertRule(sRule,iIndex);//添加样式规则
    /*其他操作*/
    var str="本页面第一个样式表定义了以下"+oStyleSheet.rules.length+"条样式规则:\n";
    for(var iCv=0;iCv<oStyleSheet.rules.length;iCv++){
        //依次访问每个样式规则
        var oRule=oStyleSheet.cssRules[iCv];//注意
        str+=oRule.selectorText+"{"+oRule.style.cssText+"}\n";
       }
    }
alert(sStr);
document.getElementById("small").onclick=function(){
    document.getElementById("sheet").href="js(StyleSheet)2.css";
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值