掌握Ajax,第5部分: 操纵DOM

使用 JavaScript 即时更新 Web 页面

简介:上一期中 Brett 介绍了文档对象模型(DOM),它的元素在幕后定义了 Web 页面。这一期文 章中他将进一步探讨 DOM。了解如何创建、删除和修改 DOM 树的各个部分,了解如何实现网页的即时更 新!

如果阅读过本系列的 上一期文章,那么您就非常清楚当 Web 浏览器显示网页时幕后发生的一切了。 前面已经提到,当 HTML 或为页面定义的 CSS 发送给 Web 浏览器时,网页被从文本转化成对象模型。无 论代码简单或复杂,集中到一个文件还是分散到多个文件,都是如此。然后浏览器直接使用对象模型而不 是您提供的文本文件。浏览器使用的模型称为文档对象模型(Document Object Model,DOM)。它连接表 示文档中元素、属性和文本的对象。HTML 和 CSS 中所有的样式、值、甚至大部分空格都合并到该对象模 型中。给定网页的具体模型称为该页面的 DOM 树。

了解什么是 DOM 树,以及知道它如何表示 HTML 和 CSS 仅仅是控制 Web 页面的第一步。接下来还需要了解如何处理 Web 页面的 DOM 树。比方说 ,如果向 DOM 树中增加一个元素,这个元素就会立即出现在用户的 Web 浏览器中 —— 不需 要重新加载页面。从 DOM 树中删除一些文本,那些文本就会从用户屏幕上消失。可以通过 DOM 修改用户 界面或者与用户界面交互,这样就提供了很强的编程能力和灵活性。一旦学会了如何处理 DOM 树,您就 向实现丰富的、交互式动态网站迈出了一大步。

注意,下面的讨论以上一期文章 “利用 DOM 进行 Web 响应” 为基础,如果没有阅读过那一期,请在继续阅读之前首先阅读上一期文章。

跨浏览器、跨语言

文档对象模型是一种 W3C 标准(链接参见 参考资料)。因此,所有现 代 Web 浏览器都支持 DOM —— 至少在一定程度上支持。虽然不同的浏览器有一些区别,但 如果使用 DOM 核心功能并注意少数特殊情况和例外,DOM 代码就能以同样的方式用于任何浏览器。修改 Opera 网页的代码同样能用于 Apple's Safari、Firefox、Microsoft Internet Explorer 和 Mozilla。

DOM 也是一种跨语言 的规范,换句话说,大多数主流编程语言都能使用它。W3C 为 DOM 定义了几种 语言绑定。一种语言绑定就是为特定语言定义的让您使用 DOM 的 API。比如,可以使用为 C、Java 和 JavaScript 定义的 DOM 语言绑定。因此可以从这些语言中使用 DOM。还有几种用于其他语言的语言绑定 ,尽管很多是由 W3C 以外的第三方定义的。

本系列文章主要讨论 JavaScript 的 DOM 绑定。这是因为多数异步应用程序开发都需要编写在 Web 浏览器中运行的 JavaScript 代码。使用 JavaScript 和 DOM 可以即时修改用户界面、响应用户事件和 输入等等 —— 使用的完全是标准的 JavaScript。

总之,建议您也尝试一下其他语言中的 DOM 绑定。比如,使用 Java 语言绑定不仅能处理 HTML 还可 处理 XML,这些内容将在以后的文章中讨论。因此本文介绍的技术还可用于 HTML 之外的其他语言,客户 端 JavaScript 之外的其他环境。

节点的概念

节点是 DOM 中最基本的对象类型。实际上,您将在本文中看到,基本上 DOM 定义的其他所有对象都 是节点对象的扩展。但是在深入分析语义之前,必须了解节点所代表的概念,然后再学习节点的具体属性 和方法就非常简单了。

在 DOM 树中,基本上一切都是节点。每个元素在最底层上都是 DOM 树中的节点。每个属性都是节点 。每段文本都是节点。甚至注释、特殊字符(如版权符号 ©)、DOCTYPE 声明(如果 HTML 或 者 XHTML 中有的话)全都是节点。因此在讨论这些具体的类型之前必须清楚地把握什么是节点。

节点是……

用最简单的话说,节点就是 DMO 树中的任何事物。之所以用 “事物” 这个模糊的字眼,是因为只能 明确到这个程度。比如 HTML 中的元素(如 img)和 HTML 中的文本片段(如 “Scroll down for more details”)没有多少明显的相似之处。但这是因为您考虑的可能是每种类型的功能,关注的是它们的不 同点。

但是如果从另一个角度观察,DOM 树中的每个元素和每段文本都有一个父亲,这个父节点可能是另一 个元素(比如嵌套在 p 元素中的 img)的孩子,或者 DOM 树中的顶层元素(这是每个文档中都出现一次 的特殊情况,即使用 html 元素的地方)。另外,元素和文本都有一个类型。显然,元素的类型就是元素 ,文本的类型就是文本。每个节点还有某种定义明确的结构:下面还有节点(如子元素)吗?有兄弟节点 (与元素或文本 “相邻的” 节点)吗?每个节点属于哪个文档?

显然,大部分内容听起来很抽象。实际上,说一个元素的类型是元素似乎有点冒傻气。但是要真正认 识到将节点作为通用对象类型的价值,必须抽象一点来思考。

时间: 2025-01-20 17:11:29

掌握Ajax,第5部分: 操纵DOM的相关文章

js操纵dom生成下拉列表框的方法

 这篇文章主要介绍了js操纵dom生成下拉列表框的方法,需要的朋友可以参考下  代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml"> 

js操纵dom生成下拉列表框的方法_javascript技巧

复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu

掌握Ajax,第6部分: 建立基于DOM的Web应用程序

在不刷新页面的情况下使用 DOM 改变网页界面 简介:本系列的上一篇文章中考察了文档对象模型(DOM)编程中涉及到的概念--Web 浏览器如何把 网页看作一棵树,现在您应该理解了 DOM 中使用的编程结构.本期教程将把这些知识用于实践,建立一 个简单的包含一些特殊效果的 Web 页面,所有这些都使用 JavaScript 操纵 DOM 来创建,不需要重新加 载或者刷新页面. 前面两期文章已经详细介绍了文档对象模型或者 DOM,读者应该很清楚 DOM 是如何工作的了.(前两 期 DOM 文章以及

chrome,IE8,ie9中同步(sync)方式的ajax导致dom更新滞后解决方法

当使用sync方式的ajax加载时会导致dom操作被挂起,有此问题的浏览器有chrome,IE8,9等(未详测), 举例:  代码如下 复制代码 dialog = new Dialog({}).open(); // sync方式的ajax $.ajax({    url: "some/url",     async: false, // load data with sync call     // other params }); 以上代码中,dialog是个对话框对象,正常情况下应

Ajax基础必读:AJAX中的一些关键技术

ajax ajax架构中主要涉及的技术:client: javascript解析xml, 操纵DOM修改html页面,javascript是"OO"的语言.server: servlet + dao, 实现service接口即可 下面是client中主要的代码:1.JS中封装解析xml的代码,以及实例应用. Quote //类的构造,传入xml文档和需要处理的标签名称function DataSet(xmldoc, tagLabel) {this.rootObj = xmldoc.ge

由浅入深完全掌握Ajax之Ajax 简介

ajax Ajax 由 HTML.JavaScript 技术.DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序.本文的作者是一位 Ajax 专家,他演示了这些技术如何协同工作 -- 从总体概述到细节的讨论 -- 使高效的 Web 开发成为现实.他还揭开了 Ajax 核心概念的神秘面纱,包括 XMLHttpRequest 对象. 五年前,如果不知道 XML,您就是一只无人重视的丑小鸭.十八个月前,Ruby 成了关注的中心,不知道 Ruby 的

Thinking in AJAX

ajax <一>AJAX - X 众所周知,异步交互.JavaScript脚本和XML封装数据是AJAX的三大特征.其实,在实际应用中,不需要牢牢套死这三条大律,在我看来,AJAX - X,即去掉用XML封装数据,也不失为一种好的设计思路,如果应用恰当,更显轻盈步伐和巧妙思路. 一般读取AJAX返回的XML结构的数据时使用XMLHttp的responseXML对象属性,同时,XMLHttp也提供了另外一个属性,即ResponseText,通过这个属性,XMLHttp可以接受来自服务器的文本结构

掌握AJAX

ajax Ajax 由 HTML.JavaScript 技术.DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序.本文的作者是一位 Ajax 专家,他演示了这些技术如何协同工作 -- 从总体概述到细节的讨论 -- 使高效的 Web 开发成为现实.他还揭开了 Ajax 核心概念的神秘面纱,包括 XMLHttpRequest 对象. 五年前,如果不知道 XML,您就是一只无人重视的丑小鸭.十八个月前,Ruby 成了关注的中心,不知道 Ruby 的

Ajax原理详细说明

ajax  Ajax 由 HTML.JavaScript? 技术.DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序. 本文的作者是一位 Ajax 专家,他演示了这些技术如何协同工作 -- 从总体概述到细节的讨论 -- 使高效的 Web 开发成为现实.他还揭开了 Ajax 核心概念的神秘面纱,包括 XMLHttpRequest 对象. 五年前,如果不知道 XML,您就是一只无人重视的丑小鸭.十八个月前,Ruby 成了关注的中心,不知道 Rub