深入学习Html DOM树的操作

开发 前端
本文向大家简单介绍一下HTML DOM树的概念,我们必须要对DOM模型有一定的认识,才能把Javascript应用于WEB,或你的RIA应用当中,因为 DHTML本质上就是操作DOM树。

你对HTML DOM树的概念是否了解, 这里和大家分享一下,DOM是文档对象模型(Document Object Model),是基于浏览器编程的一套API接口,W3C出台的推荐标准,每个浏览器都有一些细微的差别,单纯的 Javascript要结合DOM才能做DHTML编程,才能做出漂亮的效果、应用于WEB。因此,必须要对DOM有一定的认识,才能把Javascript应用于WEB,或你的RIA应用当中,因为 DHTML本质上就是操作DOM树。

DOM树

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

◆根结点(document)

◆父结点(parentNode)

◆子结点(childNodes)

兄弟结点兄弟结点

(sibling)(sibling)
例子:

假设网页的HTML如下

  1. <html> 
  2. <head> 
  3. <title>never-online'swebsite</title> 
  4. </head> 
  5. <body> 
  6. <div>tutorialofDHTMLandjavascriptprogramming</div> 
  7. </body> 
  8. </html> 
  9.  

 我们参照树的概念,画出该HTML文档结构的DOM树:

                  html
           body       head
       divt               itle
     文本                     文本

从上面的图示可以看出html有两个子结点,而html就是这两个子节点的父结点,head有节点title,title下有一个文本节点,doby下有节点div,div下有一个文本节点。

操作DOM树

开篇已经说过,DHTML本质就是操作DOM树。如何操作它呢?假设我要改变上面HTML文档中div结点的文本,如何做?

示例代码:

  1. <html> 
  2. <head> 
  3. <title>never-online'swebsite</title> 
  4. <script> 
  5. functionchangedivText(strText){  
  6. varnodeRoot=document;//这个是根结点  
  7. varnodeHTML=nodeRoot.childNodes[0];//这个是html结点  
  8. varnodeBody=nodeHTML.childNodes[1];//body结点  
  9. varnodeDiv=nodeBody.childNodes[0];//DIV结点  
  10. varnodeText=nodeDiv.childNodes[0];//文本结点'  
  11. nodeText.data=strText;//文本节点有data这个属性,  
  12. 因此我们可以改变这个属性,也就成功的操作了DOM树中的一个结点了  
  13. }  
  14. </script> 
  15. </head> 
  16. <body> 
  17. <div>tutorialofDHTMLandjavascriptprogramming</div> 
  18. <inputonclickinputonclick="changedivText('change?')"
  19. type="button"value="change"/> 
  20. </body> 
  21. </html> 
  22.  

 从上面的示例可以看出,我们可以用上面的这种方法操作DOM树上的任一节点。

注:

1.跨域除外,跨域通常是在操作frame上,简单的说,就是两个frame不属于同一域名。

2.上面的操作为了演示,采用的方法是从根结点一直到文本结点的遍历,在DOM方法上,有更简洁的方法,这些以后会有更多示例加以说明。

【编辑推荐】

  1. Html DOM树的结构和访问
  2. Java ME多模搜索技术初探
  3. JavaScript获取HTML DOM节点元素详解
  4. 如何解决Java ME设备碎片问题
  5. HTML DOM与XML DOM的区别与联系探究
责任编辑:佚名 来源: blog.csdn.net
相关推荐

2010-09-28 09:22:34

DOM模型Html

2010-09-28 14:35:34

DOM遍历

2010-04-08 16:49:36

Unix操作系统

2010-03-04 13:42:28

Linux操作系统

2009-11-17 14:13:34

PHP配置

2015-09-29 08:57:46

javascript对象

2010-09-28 11:22:18

Html DOM树

2010-06-29 15:29:22

UML建模流程

2015-09-29 09:27:04

JavaScript对象

2010-08-31 13:06:45

CSS

2020-03-23 14:15:51

RadonDB安装数据库

2009-11-17 11:14:14

PHP日期函数

2010-09-28 09:14:36

HTML DOMJavascript

2010-09-06 11:26:18

CSS伪类

2010-08-26 09:58:01

CSS clear

2010-09-07 10:57:34

CSS伪类

2024-01-03 10:15:59

Python函数

2010-09-25 14:38:18

Java内存分配

2023-12-12 13:13:00

内存C++编程语言

2010-08-11 09:29:25

FlexJava数据模型
点赞
收藏

51CTO技术栈公众号