javascript使用Dom

一、什么是DOM? 

DOM是文档对象模型(Document Object Model,是基于浏览器编程(在本教程中,可以说就是DHTML编程)的一套API接口,W3C出台的推荐标准,每个浏览器都有一些细微的差别,其中以Mozilla的浏览器最与标准接近。单纯的Javascript要结合DOM才能做DHTML编程,才能做出漂亮的效果、应用于WEB。这点几乎与其它的语言无异,正如C/C++需要库支持是一样的道理。否则就是单纯的在语法上做研究了。因此,必须要对DOM有一定的认识,才能把Javascript应用于WEB,或你的RIA应用当中,因为DHTML本质上就是操作DOM树。 希望你能够把DHTML.chm这本手册也拿上,如果你需要兼容gecko,把gecko的DOM手册也带上。因为API太多,想不起来的接口还可以查这本手册。 如果你要测试浏览器是否是支持DOM的,简单的一句就可以判断 

<script> 
    var isSupportDOM = !!document.getElementById; //两个取反,这已经在上节中说过了,意思是强制转型  + "支持 DOM!"); 
</script> 
二、DOM树 

要注意:DOM树的根统一为文档根—document,DOM既然是树状结构,那么他们自然有如下的几种关系: 

根结点(document) 

父结点(parentNode) 

子结点(childNodes) 

兄弟结点 兄弟结点 


例子: 
假设网页的HTML如下 ,程序代码 :

<html> 
 <head> 
   <title>never-online's website</title> 
 </head> 
 <body> 
    <div>tutorial of DHTML and javascript programming</div> 
 </body> 
</html> 
我们参照树的概念,画出该HTML文档结构的DOM树: 
          html 
       body head 
        div     title 
         文本    文本 
从上面的图示可以看出 
html有两个子结点,而html就是这两个子节点的父结点 
head有节点title,title下有一个文本节点 
body下有节点div,div下有一个文本节点


三、操作DOM树 

假设我要改变上面HTML文档中div结点的文本,如何做? 

程序代码 

<html> 
<head> 
<title>never-online's website</title> 
<script> 
  function changedivText (strText) { 
    var nodeRoot = document; //这个是根结点 
    var nodeHTML = nodeRoot.childNodes[0]; //这个是html结点 
    var nodeBody = nodeHTML.childNodes[1]; //body结点 
    var nodeDiv = nodeBody.childNodes[0]; //DIV结点 
    var nodeText = nodeDiv.childNodes[0];//文本结点' 
    nodeText.data = strText; //文本节点有data属性,我们可以改变这个属性,也就成功的操作了DOM树中的一个结点了 
} 
</script> 
</head> 
<body> 
<div>tutorial of DHTML and javascript programming</div> 
 <input οnclick="changedivText('change?')" type="button" value="change"/> 
</body> 
</html> 
从上面的示例可以看出,我们可以用上面的这种方法操作DOM树上的任一节点。(注:1. 跨域除外,跨域通常是在操作frame上,简单的说,就是两个frame不属于同一域名。2.上面的操作为了演示,采用的方法是从根结点一直到文本结点的遍历,在DOM方法上,有更简洁的方法,这些以后会有更多示例加以说明,下文中也会有介绍)

四、DOM节点

细心些的朋友也许发现了,在上面写的HTML代码时用<>与</>包函起来的就是一个结点,事实上是这样的吗?答案是否定的。下面就是说说节点类型,否则在有的时候是会犯错误的。比如,你把上面的代码放到Mozilla firefox的浏览器里运行一下,就会知道了。DOM中的结点类型比较多,这里写一些在HTML文档中(注:XML也是DOM树结构)常见的几种结点类型。 

1、DOCUMENT_NODE (document)文档根结点类型,该枚举型的值是9. 


2、ELEMENT_NODE (element)元素结点类型,该枚举型的值是1。上文中的html, body, div这些结点都是属于该类型。 


3、TEXT_NODE (text)文本结点类型,该枚举型的值是3。上文中的文本,如:tutorial of DHTML and javascript programming就是属于该类型。 (注:一个空格也就可能是一个文本结点)通常更需要注意的是文本结点,有可能一个回车,一个空格都是文本结点。这一点以后会碰到,当然,我们也有办法处理,这里先不要急,以后也会说到的。 

五、DOM常用的API 

这些常用的API是要记下来的,当然在非IE的浏览器里也会有效,是符合w3c的。这些API在以后的编程中会常常用到。正如每个编程平台所提供的API一样,常用必须记下来,节省时间从而提高编程效率。只写几个最常用的,其它的API会在以后的示例中写出。由浅而深,从易到难嘛。

1、获取ELEMENT_NODE,元素节点 

2)、属性:object.innerHTML

3)、方法:object.getElementsByTagName(标签的名字)

..................等等

总结:dom对于html解析和操作是一把非常好使的武器,希望大家好好研究!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值