文档对象模型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 相关文章推荐
bootstrap data与jquery .data
Jul 07 Javascript
jQuery中removeProp()方法用法实例
Jan 05 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
Jun 07 Javascript
JS使用cookie设置样式的方法
Jun 30 Javascript
基于js中的原型、继承的一些想法
Aug 10 Javascript
微信小程序-消息提示框实例
Nov 24 Javascript
老生常谈combobox和combotree模糊查询
Apr 17 Javascript
微信小程序 scroll-view实现锚点滑动的示例
Dec 06 Javascript
微信小程序实现音乐播放器
Nov 20 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
Jul 24 Javascript
Vue包大小优化的实现(从1.72M到94K)
Feb 18 Vue.js
VUE递归树形实现多级列表
Jul 15 Vue.js
原生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
PHP 数组教程 定义数组
2009/10/23 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
固定背景实现的背景滚动特效示例分享
2013/05/19 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
2013/12/30 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
2016/03/22 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
浅谈Koa服务限流方法实践
2017/10/23 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
python获取各操作系统硬件信息的方法
2015/06/03 Python
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
Python中int()函数的用法浅析
2017/10/17 Python
Python 反转字符串(reverse)的方法小结
2018/02/20 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
2019/08/23 Python
python实现静态web服务器
2019/09/03 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
飞利浦法国官网:Philips法国
2019/07/10 全球购物
绿色环保口号
2014/06/12 职场文书
幼儿教师师德师风演讲稿
2014/08/22 职场文书
出售房屋委托书范本
2014/09/24 职场文书
PC版《死亡搁浅导剪版》现已发售 展开全新的探险
2022/04/03 其他游戏
vscode内网访问服务器的方法
2022/06/28 Servers