Ajax的基础构架:DOM模型
来源:互联网 发布:软件研发工作流程 编辑:程序博客网 时间:2024/05/01 22:36
在Ajax中除了设计数据接口以及和服务通信外,另一个重要的方面就是把这些数据显示在页面中。在Web的发展中,人们并不满足Web页面一提交到浏览器,便再也不能改变的情况,于是出现了DMHTML,他把页面的部分元素设置为对象,通过对这些对象的操作能改变原来静态的HTML的内容,这也是最初的DOM模型。现在,DOM模型已经发展到Level3的水平,W3C全面制定了操作XML,HTML的标准。
1.认识DOM
DOM模型的全称是Document Object Model,即文档对象模型,它定义了操作文档对象的接口。 在这个模型中,一个文档被看成结构化的数据,对于XML就像一棵树的结构,树种每个节点对应一个XML标记,都是一个对象。
在Ajax中,DOM模型其实是最核心的结构,使所有Ajax开发的基础结构。如果没有DOM模型,就没有办法在客户端改变页面的内容,所有的局部刷新,异步请求也就无从实现,熟练掌握DOM模型的相关技术,才算真正掌握了Ajax开发精髓。
2.DOM中元素的属性
元素是DOM描述内容的一个术语,一个元素就是树形结构中的一个节点。元素可以包括属性,子元素,文本值。
DOM中元素的属性
3. 处理DOM中的节点
在DOM模型中引用一个节点可以有多种方式,下面分别介绍。
(1)使用document.getElementById()引用指定id的节点。在HTML文档中,每个标记都可以有一个id属性。标准规定:这个id必须是整个文档唯一的。对应这个属性,document提供了getElementById方法来获取这个节点的应用。
(2)使用document.getElementByTagName()引用指定标记名称的节点。这个方法可以用来获取指定标记的元素节点的集合,返回一个数组,包含对这些节点的引用。
(3)引用子节点。每个节点都有一个childNodes集合属性,类型是数组对象,表示该节点的所有子节点的集合。这些子节点按照其在文档中出现的顺序排列,因此可以通过索引来依次访问各个子节点。例如为了引用HTML文档的根节点,可以使用如下代码:
document.childNodes[0];
而<head>和<body>节点是<html>的子节点,可以分别用以下两条语句引用:
document.childNodes[0].childNodes[0]; // 引用<head>节点
document.childNodes[0].childNodes[1]; // 引用<body>节点
除了使用childNodes属性,还有两个属性可以用于引用子节点,分别是:
element.firstChild;
element.lastChild;
它们分别表示第一个和最后一个字节点。
(4)引用父节点。HTML的节点层次是一个树状的结构,除了根节点外,每个节点都仅有一个父节点,可以由parent'Node属性来引用,语法如下:
element.parentNode;
(5)引用兄弟节点。属于同一个文档层次的节点称为兄弟节点。有两个属性可以用于兄弟节点间的相互引用,分别是:
element.nextSibling; //引用上一个兄弟节点
element.previousSibling; //引用下一个兄弟节点
如果该节点没有相应的兄弟节点,则属性返回null。
(6)使用nodeName属性获取节点名称
Node.nodename
对于不同的节点类型,nodename的返回值有所差异:
元素节点:返回标记的名称,例如<span>则返回"span";
属性节点:返回属性的名称,例如id="span1"则返回"id";
文本节点: 返回文本的内容
(7)使用nodeType属性获取节点类型
Node.nodeType
对应三种类型的节点,nodeType以数字形式返回它们的类型:
元素节点:返回1
属性节点:返回2
文本节点:返回3
(8)使用nodeValue属性获取节点的值
Node.nodeValue
不同类型的节点有不同的返回值:
元素节点:返回null
属性节点:返回undefined
文本节点:返回文本内容
(9)使用hasChildNodes()方法判断给定节点是否有子节点
(10)使用tagName属性返回元素节点的标记名称
4. 处理属性节点
属性节点作为一个特殊的节点,是依赖元素节点而存在的。
使用setAttribue()方法添加一个属性
elementNode.setAttribute(attributeName,attributeValue)
其中:
elementNode是要添加属性的节点
attributeName是要添加的属性的名称
attributeVale是属性的值
使用getAttribue()方法获取一个属性值
elementNode.getAttribute(attributeName);
其中:
elementNode是要获取属性的节点
attributeName是要获取值的属性的名称
5.处理文本节点
要获取一个节点内的文本,通常可以使用innerHTML属性,例如对于如下的Html代码片段:
<span id="span1"hello>
可以使用如下的JavaScript代码来获取文本的值:
document.getElementById("span1").innerHTML;
同时,这里的“hello”是一个文本节点,因此可以通过通用的节点处理方法来获取他的值:
document.getElementById("span1"),childNodes[0].nodeValue;
在很多情况下,必须使用文本节点来获取一段文本:
<div><img src="xx.gif" alt="xx"/> some text here</div>
对于上面的<div>标记,就包含了两个节点:<img>和内容为“some text here”的文本节点。可以通过下面的代码;
divElement.childNodes[1];
来获取其中文本节点的引用。
- Ajax的基础构架:DOM模型
- 软件构架的模型
- 软件构架的模型
- AJAX与DOM模型
- DOM模型基础
- 服务器构架的基础1
- 【Ajax】DOM基础及DOM操作HTML
- Ajax操作Dom的基础--节点的添加
- Ajax操作Dom的基础--节点的添加(二)
- Ajax操作Dom的基础--节点的添加
- 深入学习DOM模型基础
- AJAX学习(二)-------DOM基础
- AJAX学习----DOM基础(2)
- ajax——dom基础
- 微软Ajax库DOM事件模型
- javascript的dom模型
- js的dom模型
- JavaScript DOM编程基础精华01(DOM入门,DOM模型和获取页面元素,事件,window对象的方法)
- 学习 Linux 的九条忠告 (转)
- javascript事件列表解说(转)
- js实现倒计时(转)
- 【非刷草】 教你如何每天不花钱赚1000点以上经验
- java小积累(转)
- Ajax的基础构架:DOM模型
- 第一篇日志
- 系统程序员成长计划-并发(五)
- Struts2拦截了Servlet的请求解决
- 转:英语老师永远都不会告诉你的经典网站
- 迷茫的大学生,清醒吧
- Ext智能提示 - JSEclipse(Eclipse插件)
- 分区设置损坏
- Math ceil()、floor()、round()方法