轻松学习JavaScript十八:JavaScript之DOM简介

一DOM概述

DOM(文档对象模型)是HTML和XML的应用程序接口(API)。DOM将把整个页面规划成由节点层级构成的文档。

DOM描绘了一个层次化的节点树,运行开发人员添加,移除和修改页面的某一部分。HTML或XML页面的每个部分都

是一个节点的衍生物。通过DOM,可访问HTML文档的所有元素。当网页被加载时,浏览器会创建页面的文档对象模

型,DOM模型被构造为对象的树。

DOM是W3C(万维网联盟)的标准。DOM定义了访问HTML和XML文档的标准。“W3C 文档对象模型(DOM)是中立

于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。”

W3C DOM 标准被分为 3 个不同的部分:

1核心 DOM - 针对任何结构化文档的标准模型

2XML DOM - 针对 XML 文档的标准模型

3HTML DOM - 针对 HTML 文档的标准模型

二DOM节点树与节点

(1)DOM节点

在DOM中,所有事物都是节点。DOM是被视为节点树的HTML。HTML文档中的所有内容都是节点:整个文档是

一个文档节点;每个HTML元素是元素节点;HTML元素内的文本是文本节点;每个HTML属性是属性节点;注释是注

释节点。那么从实际出发看看:

<span style="font-size:18px;"><!--div标签-->
<div id="test">块级元素<div></span>

(2)节点父,子和同胞

节点树中的节点彼此拥有层级关系。父(parent),子(child)和同胞(sibling)等术语用于描述这些关系。父节点拥有子

节点。同级的子节点被称为同胞(兄弟或姐妹)。

1在节点树中,顶端节点被称为根(root)

2每个节点都有父节点、除了根(它没有父节点)

3一个节点可拥有任意数量的子

4同胞是拥有相同父节点的节点

下面的图片展示了节点树的一部分,以及节点之间的关系:

(3)节点树

看下面的代码组成的DOM树:

<span style="font-size:18px;"><!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="Content-Type" content="text/html; charset=gb2312" />
          <title>标题</title>
     </head>

     <body>
          <h1>一级标题</h1>
          <a href="http:///www.baidu.com">百度一下,你就知道</a>
     </body>
</html></span>

从上面的HTML中:

<html>节点没有父节点;它是根节点

<head>和<body>的父节点是<html>节点

文本节点 "一级标题" 的父节点是<h1>节点

并且:

<html>节点拥有两个子节点:<head>节点和<body>节点

<head>节点拥有一个子节点:<title>节点和<meta>节点

<title>节点也拥有一个子节点:文本节点 "一级标题"

<h1>和<a>节点是同胞节点,同时也是<body>的子节点

并且:

<head>元素是<html>元素的首个子节点

<body>元素是<html>元素的最后一个子节点

<h1>元素是<body>元素的首个子节点

<a>元素是<body>元素的最后一个子节点

加载HTML文档页面时,浏览器会自动生成一个树型结构,用来表示页面内部结构。DOM将这种树结构称之为由

节点组成的节点树。节点树图示:

三DOM的作用

通过可编程的对象模型DOM,JavaScript获得了足够的能力来创建动态的 HTML。

(1)JavaScript的DOM能够改变页面中的HTML元素

<span style="font-size:18px;"><!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="Content-Type" content="text/html; charset=gb2312" />
<title>DOM</title>
</head>

<body>
<div id="div1">
<p id="p1">这是已有的段落</p>
</div>

<script type="text/javascript">
var para=document.createElement("p");// 创建一个的元素节点p标签
var node=document.createTextNode("这是通过DOM添加的新元素的文本");//创建一个文本节点
para.appendChild(node);//向p标签追加文本节点

var element=document.getElementById("div1");//通过id属性查找div元素
element.appendChild(para);//向div元素内追加一个新元素
</script>
</body>
</html></span>

运行的结果为:

(2)JavaScript的DOM能够改变页面中的HTML内容

<span style="font-size:18px;"><!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="Content-Type" content="text/html; charset=gb2312" />
<title>DOM</title>
</head>

<body>
<p id="p1">Hello World!</p>
<script type="text/javascript">
document.getElementById("p1").innerHTML="New text!";
</script>
</body>
</html></span>

运行的结果为:

(3)JavaScript的DOM能够改变页面中的CSS样式

<span style="font-size:18px;"><!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="Content-Type" content="text/html; charset=gb2312" />
<title>DOM</title>
</head>

<body>
<p id="p1">Hello world!</p>
<p id="p2">Hello world!</p>

<script type="text/javascript">
document.getElementById("p2").style.color="blue";
document.getElementById("p2").style.fontFamily="Arial";
document.getElementById("p2").style.fontSize="larger";
</script>
</body>
</html></span>

运行的结果为:

(4)JavaScript的DOM能够对页面中的事件做出反应

<span style="font-size:18px;"><!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="Content-Type" content="text/html; charset=gb2312" />
<title>DOM</title>
</head>

<body>
<p>点击按钮来执行<b>displayDate()</b>函数。</p>
<button onclick="displayDate()">显示时间标准时间按钮</button>
<p id="demo"></p>

<script type="text/javascript">
function displayDate()
{
    document.getElementById("demo").innerHTML=Date();
}
</script>
</body>
</html></span>

运行的结果为:

在阐述为什么学习JavaScript的时候有的已经都涉及到,这里我们会学习更加复杂的东西来操作HTML元素和

CSS样式,这样会使得网页有动感,下拉菜单和图片无缝滚动等动态效果我们就可以实现了。这些都是后面要学习的

东西了,就不再多说,本篇知识概括一下。如果想看效果的话可以参考:轻松学习JavaScript四:JS点击灯泡来点亮

或熄灭这盏灯的网页特效映射出JS在HTML中作用DIV+CSS实操六:经管系网页添加导航栏下拉菜单

时间: 2024-09-29 16:24:31

轻松学习JavaScript十八:JavaScript之DOM简介的相关文章

JavaScript学习总结(十四)——JavaScript编写类的扩展方法

在?J?a?v?a?S?c?r?i?p?t?中?可以使?用?类的p?r?o?t?o?t?y?p?e属性来?扩?展?类的属?性?和?方?法,在实际开发当中,当JavaScript内置的那些类所提供的动态方法和动态属性不满足我们实际开发时,我们就可以通过"prototype"属性给自定义类添加方法和属性或者扩展原有的类中的方法和属性. 一.扩展JavaScript内置类,添加动态方法 语法格式: 类名.prototype.方法名 = function([param1],[param2],.

JavaScript学习总结(十二)——JavaScript编写类

在工作中经常用到JavaScript,今天总结一下JavaScript编写类的几种写法以及这几种写法的优缺点,关于JavaScript编写类的方式,在网上看到很多,而且每个人的写法都不太一样,经常看到的就是以下几种方式. 1.构造函数方式 用构造函数模拟"类",在其内部用this关键字指代实例对象. 基本语法: function 类名(){     this.属性名;//公共属性     var 属性名;//私有属性    /*凡是定义类的公共属性和公共方法都要使用this*/   

JavaScript学习总结(十六)——Javascript闭包(Closure)

原文地址: http://www.cnblogs.com/xdp-gacl/p/3703876.html 闭包(closure)是Javascript语言的一个难点,也是它的特色, 很多高级应用都要依靠闭包实现.很早就接触过闭包这个概念了,但是一直糊里糊涂的,没有能够弄明白JavaScript的闭包到底是什么,有什么用,今天 在网上看到了一篇讲JavaScript闭包的文章(原文链接), 讲得非常好,这下算是彻底明白了JavaScript的闭包到底是个神马东东以及闭包的用途了,在此写出来和大家分

C++语言学习(十八)——异常处理

C++语言学习(十八)--异常处理 一.C语言异常处理 异常是指程序在运行过程中产生可预料的执行分支.如除0操作,数组访问越界.要打开的文件不存在.Bug是指程序中的错误,是不被预期的运行方式.如野指针.堆空间使用结束未释放.C语言中处理异常的方式一般是使用if....else...分支语句. double divide(double a, double b) { const double delta = 0.000000000000001; double ret = 0; if( !((-de

三十八、git merge简介

git merge的基本用法为把一个分支或或某个commit的修改合并现在的分支上. 我们可以运行git merge -h查看其命令usage: git merge [options] [<commit>...]    or: git merge [options] <msg> HEAD <commit>    or: git merge --abort -n                    do not show a diffstat at the end of

轻松学习JavaScript十八:DOM编程学习之DOM简单介绍

一DOM概述 DOM(文档对象模型)是HTML和XML的应用程序接口(API).DOM将把整个页面规划成由节点层级构成的文档. DOM描绘了一个层次化的节点树,执行开发者加入,移除和改动页面的某一部分. HTML或XML页面的每一个部分都 是一个节点的衍生物. 通过DOM.可訪问HTML文档的全部元素. 当网页被载入时.浏览器会创建页面的文档对象模 型,DOM模型被构造为对象的树. DOM是W3C(万维网联盟)的标准.DOM定义了訪问HTML和XML文档的标准."W3C 文档对象模型(DOM)是

Web前端学习第十六天&#183;fighting_JavaScript(DOM编程艺术5-6章)

平稳退化 如果正确的使用了JavaScript脚本,就可以让访问者在他们的浏览器不支持JavaScript的情况下仍能顺利地浏览网站.这就是平稳退化,即虽然某些功能无法使用,但最基本的操作仍能顺利完成. 平稳退化的经典例子:(比较以下几条语句) 1 <a href="javascript:popUp('http://www.example.com/');">Example</a> 2 <a href="#" onclick="

JavaScript权威设计--事件冒泡,捕获,事件句柄,事件源,事件对象(简要学习笔记十八)

1.事件冒泡与事件捕获 2.事件与事件句柄 3.事件委托:利用事件的冒泡技术.子元素的事件最终会冒泡到父元素直到跟节点.事件监听会分析从子元素冒泡上来的事件. 事件委托的好处: 1.每个函数都是对象,都会占用内存,内存中对象越多,性能越差. 2.必须事先指定所有事件处理程序而导致的DOM访问次数,会延迟整个页面的交互就绪时间. 怎样处理由于事件较多引起的性能差: 1.采用事件委托技术,限制简历的连接数量 2.在不需要的时候移除事件处理程序 例子: html: <div id="myDiv&

红帽考试学习第十八记

第十八章 使用MariaDB数据库管理系统 数据库管理系统 数据库指按照某些特定结构来存储数据资料的数据仓库. 数据库管理系统是一种能够对数据库中存放的数据进行建立.修改.删除.查找.维护等操作的软件程序.它通过把计算机中具体的物理数据转换成适合用户理解的抽象逻辑数据,有效地降低数据库管理的技术门槛,因此即便是从事Linux运维的工程师也可以对数据库进行基本的管理操作. 初始化MariaDB服务 相较于MySQL,MariaDB数据库管理系统有了很多新鲜的扩展特性,例如对微妙级别的支持.线程池.