文档对象模型DOM通俗讲解


Posted in Javascript onNovember 01, 2013

在开始之前先说一点,DOM是非常容易理解的,但是大家说的太官方,让人很是难于理解,我们就用非常简单的语言翻译一遍。加深对DOM的理解,从而对它有一个全面的认识。

什么是DOM

DOM的全称是Document Object Model,即文档对象模型,它允许脚本控制Web页面、窗口和文档。

如果没有DOM,JavaScript将是另外一种脚本语言;而有了DOM,它将成为制作动态页面的强有力工具。DOM不是JavaScript语言的一部分,而是内置在浏览器中的一个应用程序接口。当然,我们可以简单的理解为一种用于HTML和XML文档的编程接口。它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式。

DOM(文档对象模型)是一组用来描述脚本怎样与结构化文档进行交互和访问的web标准。他的功能是把浏览器支持的文档(包括HTML XML XHTML)当作一个对象来解析。DOM实际上是一个操作文档里面所包含的内容的一个编程的API,允许开发人员从文档中读取、搜索、修改、增加和删除数据。DOM是与平台和语言无关的,也就是说只要是支持DOM的平台和编程语言,你都可以用来编写文档。

DOM定义了一系列对象、方法和属性,用于访问、操作和创建文档中的内容、结构、样式以及行为。每一个网页元素(一个HTML标签)都对应着一个对象(object,所谓“对象”,用白话说就是“东西”。)。网页上的标签是一层层嵌套的,最外面的一层是<HTML>,文档对象模型也这样一层层嵌套着,但是通常被理解成一棵树的形状。树根是window或document对象,相当于最外层的标签的外围,也就是整个文档。树根之下(这棵树的图通常是倒着画,就好像遗传谱系或者家谱那样。树根就是唯一的共同祖先)是子一级的对象,子对象也有它自己的子对象,除了根对象以外,所有的对象都有自己的父对象,同一对象的子对象之间就是兄弟的关系。如果大家没有见过家谱,应该知道一个公司的组织架构。
文档对象模型DOM通俗讲解 
DOM实际上是以面向对象方式描述的文档模型。DOM定义了表示和修改文档所需的对象、这些对象的行为和属性以及这些对象之间的关系。可以把DOM认为是页面上数据和结构的一个树形表示,不过页面当然可能并不是以这种树的方式具体实现。通过JavaScript,可以重构整个 HTML 文档。可以添加、移除、改变或重排页面上的项目。

要改变页面的某个东西,JavaScript 就需要获得对 HTML 文档中所有元素进行访问的入口。这个入口连同对 HTML 元素进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的(DOM)。

DOM和JavaScript

我们用JavaScript对网页进行的所有操作都是通过DOM进行的。如何访问DOM中的对象?

先是父对象名,后面接着是子对象名,使用圆点隔开。

<span style="font-size:18px">window.document.write("hi!how are you!")</span>

DOM操作Checkbox实例
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>DOM操作checkbox</title> 
<script type="text/javascript"> 
//当html页面加载完后;执行以下函数 
window.onload = function() { 
document.getElementById("btn").onclick = function() { 
var inputs = document.getElementsByTagName("input"); 
for ( var i = 0; i < inputs.length; i++) { 
if (inputs[i].type = "checkbox") { 
if (inputs[i].value % 2 != 0) { 
inputs[i].checked = true; 
} 
} 
} 
} 
} 
</script> 
</head> 
<body> 
<input type="checkbox" value="1" /> 
<input type="checkbox" value="2" /> 
<input type="checkbox" value="3" /> 
<input type="checkbox" value="4" /> 
<input type="checkbox" value="5" /> 
<input type="checkbox" value="6" /> 
<input type="checkbox" value="7" /> 
<input type="checkbox" value="8" /> 
<input type="checkbox" value="9" /> 
<input type="checkbox" value="10" /> 
<button id="btn">选中奇数</button> 
</body> 
</html>

单机按钮显示效果:
文档对象模型DOM通俗讲解 
Javascript 相关文章推荐
初学JavaScript_03(ExtJs Grid的简单使用)
Oct 02 Javascript
使用Post提交时须将空格转换成加号的解释
Jan 14 Javascript
jquery控制左右箭头滚动图片列表的实例
May 20 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
Dec 04 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
Jul 18 Javascript
EasyUI中实现form表单提交的示例分享
Mar 01 Javascript
JavaScript数据结构之数组的表示方法示例
Apr 12 Javascript
vue实现留言板todolist功能
Aug 16 Javascript
vue 组件中slot插口的具体用法
Apr 03 Javascript
vuejs点击class变化的实例
Sep 05 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
Jan 15 Javascript
vue模块移动组件的实现示例
May 20 Javascript
原生js ActiveXObject获取execl里面的值
Nov 01 #Javascript
框架页面高度自动刷新的Javascript脚本
Nov 01 #Javascript
JS滚轮事件onmousewheel使用介绍
Nov 01 #Javascript
JS实现拖动示例代码
Nov 01 #Javascript
多种方法实现JS动态添加事件
Nov 01 #Javascript
基于jquery插件实现常见的幻灯片效果
Nov 01 #Javascript
jQuery Mobile 导航栏代码
Nov 01 #Javascript
You might like
3种平台下安装php4经验点滴
2006/10/09 PHP
php 获取全局变量的代码
2011/04/21 PHP
PHP删除目录及目录下所有文件的方法详解
2013/06/06 PHP
php 邮件发送问题解决
2014/03/22 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
laravel-admin 与 vue 结合使用实例代码详解
2019/06/04 Javascript
微信小程序全局变量改变监听的实现方法
2019/07/15 Javascript
Vue中强制组件重新渲染的正确方法
2021/01/03 Vue.js
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
python和flask中返回JSON数据的方法
2018/03/26 Python
python3下载抖音视频的完整代码
2019/06/05 Python
YUV转为jpg图像的实现
2019/12/09 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
Hotels.com泰国:酒店预订网站
2019/11/20 全球购物
.net工程师笔试题
2012/06/09 面试题
《值日生》教学反思
2014/02/17 职场文书
高中军训第一天感言
2014/03/06 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
优秀教师工作总结2015
2015/07/22 职场文书
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
2022/04/29 Servers
Oracle 11g数据库使用expdp每周进行数据备份并上传到备份服务器
2022/06/28 Oracle