文档对象模型(Document Object Model, DOM)是W3C提出的用于访问和修改文档的接口.

JavaScript设计的初衷是为Web提供交互功能,它通过DOM接口来访问和修改文档.

DOM标准被分为3个部分:

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

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

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

DOM节点

在DOM中Html文档是一个文档节点, 在Js中可以使用document对象来访问.

Html文档是以树状结构组织的, 每个标签都是一个节点, 树的根节点为<html>标签.

<!DOCTYPE html>
<html> <head> <meta charset="utf-8">
<title>Hello</title> </head> <body> <p>Hello World!</p> </body> </html>

注意<p>Hello World!</p>其中的文本Hello World!在DOM中被认为是一个文本子节点.

访问节点

DOM标准中提供了3种访问节点的方式:

  • getElementById

  • getElementsByTagName

  • getElementsByClassName

Id可以精确定位元素, TagName和ClassName只能定位一组元素.

DOM中的节点分为Node包括Element, Comment, Documnet等类型, 但是我们主要关心Element.

<!DOCTYPE html>
<html> <body> <p id="p1">Hello World!</p> <script type="text/javascript"> document.getElementById('p1').innerHTML = 'Hello World By Dom!'
// <p id="p1">Hello World By Dom!</p> </script> </body> </html>

innerHTML属性是节点开始标签和结尾标签之间的HTML代码, 修改该属性可以修改节点的子树功能强大.

使用innerHTML属性直接编写HTML源码,需要注意防范XSS攻击.

节点的innerText属性会对字符串进行HTML编码, 保证无法设置HTML标签更为安全.

插入节点

appendChild方法可以将节点插入到节点子树的最后一个:

<!DOCTYPE html>
<html> <body> <div id="d">
<p> Python </p> </div> <script type="text/javascript"> var div = document.getElementById('d');
var js = document.createElement('p')
js.innerText = 'JavaScript'
div.appendChild(js) </script> </body> </html>

若该节点不存在则直接插入, 若存在则进行替换.

insertBefore方法可以在指定节点前插入节点:

<!DOCTYPE html>
<html> <body> <div id="d">
<p id="py"> Python </p> </div> <script type="text/javascript"> var div = document.getElementById('d')
var py = document.getElementById('py');
var js = document.createElement('p')
js.innerText = 'JavaScript'
js.id = 'js'
div.insertBefore(js, py) </script> </body> </html>

删除节点

removeChild可以用于删除节点:

<!DOCTYPE html>
<html> <body> <div id="d">
<p id="py"> Python </p>
<p id="js"> javaScript </p>
</div> <script type="text/javascript"> var div = document.getElementById('d')
var js = document.getElementById('js');
div.removeChild(js) </script> </body> </html>

操作表单

HTML表单的输入控件主要有:

  • 文本框<input type="text"> 用于输入文本;

  • 口令框<input type="password">用于输入口令;

  • 单选框<input type="radio">用于选择一项;

  • 复选框<input type="checkbox">用于选择多项;

  • 下拉框<select>用于选择一项;

  • 隐藏文本<input type="hidden">用户不可见但表单提交时会把隐藏文本发送到服务器;

对于text,password, hidden, select型的输入框只需要通过DOM访问input元素的value属性即可得到输入.

<!DOCTYPE html>
<html> <body> <form>
<label>username: <input id="username" type="text"></label>
<br><br>
<label>password:<input id="password" type="password"></label>
</form> <script type="text/javascript"> var username = document.getElementById('username')
username.value = "finley" </script> </body> </html>

对于redio和checkbox需要检查其checked属性

<!DOCTYPE html>
<html> <body> <form>
<label><input type="radio" id="yes" value="1"> Yes</label>
<label><input type="radio" id="no" value="2"> No</label>
</form> <script type="text/javascript"> var yes = document.getElementById('yes')
var no = document.getElementById('no')
document.write(yes.checked)
document.write("<br>")
document.write(no.checked) </script> </body> </html>

Js还可以通过<form>元素的submit()方法提交表单:

<!DOCTYPE html>
<html> <body> <form id="form1">
<label>username: <input id="username" type="text"></label>
<br><br>
<label>password:<input id="password" type="password"></label>
</form> <script type="text/javascript"> var form = document.getElementById('form1')
form.submit() </script> </body> </html>

DOM事件

用户事件

事件机制允许当特定事件发生时调用函数进行响应:

  • 被点击onclick

  • 表单提交onsubmit

  • 输入内容改变onchanged

  • 界面被加载onload

更多的事件请参见DOM事件 - 菜鸟教程

onclick事件允许对点击事件进行响应:

<!DOCTYPE html>
<html> <body> <button id="btn">Click Me!</button> <script type="text/javascript"> var btn = document.getElementById('btn')
btn.onclick = function() {
btn.innerText = "I am clicked!"
} </script> </body> </html>

onsubmit事件通常用于对输入的校验:

<!DOCTYPE html>
<html> <body> <form id="logup">
<label>username: <input id="username" type="text"></label>
<br><br>
<label>password:<input id="password" type="password"></label>
<br><br>
<label>repeat:<input id="repeat" type="password"></label>
<br><br>
<button id= type="submit">submit</button>
</form> <script type="text/javascript"> var form = document.getElementById('logup')
var password = document.getElementById('password')
var repeat = document.getElementById('repeat')
form.onsubmit = function() {
if (password.value != repeat.value) {
alert('repeat password doesn\'t match')
}
} </script> </body> </html>

时钟事件

setTimeout设定在一段时间间隔之后再执行代码:

<!DOCTYPE html>
<html> <body> <script type="text/javascript"> setTimeout("alert('Time out!')",10 * 1000) </script> </body> </html>

第一个参数为String形式的Js代码, 第二个参数是以毫秒为单位的时间间隔.

setTimeout设定的时钟事件只触发一次后停止.

clearTimeout可以取消时钟事件:

<!DOCTYPE html>
<html> <body> <script type="text/javascript"> var t = setTimeout("alert('Time out!')",10 * 1000)
clearTimeout(t) </script> </body> </html>

setInterval方法与setTimeout方法类似,但是会不停地触发事件而非一次之后停止:

<!DOCTYPE html>
<html> <body> <p id='panel'></p> <script type="text/javascript"> var panel = document.getElementById('panel')
function display() {
panel.innerText = Date()
}
setInterval('display()', 1000)
</script> </body> </html>

clearInterval可以取消时钟事件:

var t = setInterval('display()', 1000)
clearInterval(t)

JavaScript文档对象模型的更多相关文章

  1. JavaScript编程:文档对象模型DOM

    5.文档对象模型DOM JS里的DOM和XML里的DOM不同,但是解析方式是一样的. document.getElementByID("id")根据ID获得元素节点. 创建和操作节 ...

  2. JavaScript中的文档对象模型

    1. DOM基本介绍1 什么是DOMDOM的英语全称为Document Object Model,翻译成中文就 是文档对象模型.也就是说,将整个文档看作是一个对象.而一个文档又是由很多节点组成的, 那 ...

  3. 文档对象模型DOM通俗讲解

    转自:http://www.jb51.net/article/42671.htm 在开始之前先说一点,DOM是非常容易理解的,但是大家说的太官方,让人很是难于理解,我们就用非常简单的语言翻译一遍.加深 ...

  4. 第一百一十三节,JavaScript文档对象,DOM基础

    JavaScript文档对象,DOM基础 学习要点: 1.DOM介绍 2.查找元素 3.DOM节点 4.节点操作 DOM(Document Object Model)即文档对象模型,针对HTML和XM ...

  5. 前端-javascript-DOM(重点)文档对象模型

    1.DOM概念-文档对象模型 // 什么是DOM ? /* Document Object Model 文档对象模型 面向对象: 三个特性 封装 继承 多态 一个对象: 属性和方法 说 万事万物皆对象 ...

  6. 认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法。元素、属性和文本的树结构(节点树)。

    认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面代码 ...

  7. 第一百一十四节,JavaScript文档对象,DOM进阶

    JavaScript文档对象,DOM进阶 学习要点: 1.DOM类型 2.DOM扩展 3.DOM操作内容 DOM自身存在很多类型,在DOM基础课程中大部分都有所接触,比如Element类型:表示的是元 ...

  8. xml.dom——文档对象模型API

    文档对象模型,或者“DOM”,是一个跨语言API的World Wide Web Consortium(W3C)来访问和修改XML文档.DOM的实现提供了一个XML文档树结构,或允许客户机代码从头开始建 ...

  9. 文档对象模型DOM

    文档对象模型 DOM 1 DOM概述 1.1 什么是DOM 文档对象模型 Document Object Model 提供给用户操作document obj 的标准接口 文档对象模型 是表示和操作 H ...

随机推荐

  1. DevExpress中Tile Application窗体的模型架构图

    DEV中Tile Application模型架构比较复杂,整理一下和大家分享. 图中:立体代表类:虚线椭圆代表属性.

  2. redis开机自启动脚本(linux)

    目前redis放在home下的文件夹中,写一个脚本,待系统启动的过程中,去启动该脚本. 脚本:redis.sh #!/bin/sh /home/juepei/Downloads/redis-3.0.0 ...

  3. 设计模式之单件模式(Singleton Pattern)

    一.单件模式是什么? 单件模式也被称为单例模式,它的作用说白了就是为了确保“该类的实例只有一个” 单件模式经常被用来管理资源敏感的对象,比如:数据库连接对象.注册表对象.线程池对象等等,这种对象如果同 ...

  4. Asp.net Core 2.1 Kestrel 现在支持 多协议处理(Tcp)

    地址:https://github.com/davidfowl/MultiProtocolAspNetCore.git 在一个Kestrel服务上可以同时处理Tcp,Http,Https等多种协议. ...

  5. ASP.NET webform多次提交表单问题

    最近几天遇到一个头疼的问题,项目采用的是webform开发,每个界面都有个提交按钮,点击多次提交按钮导致提交按钮的OnClick事件执行了多次, 每次OnClick里面都有一些逻辑处理,执行了多次导致 ...

  6. Day 18 正则表达式.

    一.字符 .匹配除换行符以外的任意字符. \w 匹配字母数字或者下划线. \s 匹配任意的空白符 \d 匹配数字 \n 匹配一个换行符 \t 匹配一个制表符 ^ 匹配字符串的开始. $ 匹配字符串的结 ...

  7. 782. Transform to Chessboard

    An N x N board contains only 0s and 1s. In each move, you can swap any 2 rows with each other, or an ...

  8. Java的8种基本数据类型

    待整理主题:Java的8种基本数据类型与对应封装类型.拆箱.装箱 =================================================================== ...

  9. apache测试网页执行效率

    apache软件下有一个测试网页访问速度的工具ab.exe,位于apache的bin目录下,windows下使用命令行进入bin目录,执行ab.exe -n 10000 -c 10 http://12 ...

  10. Flask从入门到精通之大型程序的结构二

    一.程序包 程序包用来保存程序的所有代码.模板和静态文件.我们可以把这个包直接称为app(应用),如果有需求,也可使用一个程序专用名字.templates 和static 文件夹是程序包的一部分,因此 ...