来源:HTML DOM 教程

0、什么是 HTML DOM?

HTML DOM 是HTML Document Object Model(文档对象模型)的缩写,它将网页中的各个元素都看作一个个对象,从而使网页中的元素也可以被计算机语言获取或者编辑,也就是:

  • HTML 的标准对象模型
  • HTML 的标准编程接口(所有HTML元素被定义为对象,而编程接口则是对象方法和对象属性)
  • W3C 标准

HTML DOM 定义了所有 HTML 元素的对象和属性,以及访问它们的方法。

换言之,HTML DOM 是关于如何获取、修改、添加或删除 HTML 元素的标准。

1、DOM 节点

根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点:

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

2、HTML DOM 方法

方法是我们可以在节点上执行的动作(比如添加或修改元素)。

这里提供一些您将在本教程中学到的常用方法:

方法 描述
getElementById() 返回带有指定 ID 的元素。
getElementsByTagName() 返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)。
getElementsByClassName() 返回包含带有指定类名的所有元素的节点列表。
appendChild() 把新的子节点添加到指定节点。
removeChild() 删除子节点。
replaceChild() 替换子节点。
insertBefore() 在指定的子节点前面插入新的子节点。
createAttribute() 创建属性节点。
createElement() 创建元素节点。
createTextNode() 创建文本节点。
getAttribute() 返回指定的属性值。
setAttribute() 把指定属性设置或修改为指定的值。

3、HTML DOM 属性

属性是节点能够被获取或设置的值(比如节点的名称或内容)。

3、1 innerHTML 属性

用来获取或设置位于对象起始和结束标签内的HTML。

有两种写法:(1)document.getElementById(id).innerHTML=.......(2)id.innerHTML=.......

3、2 nodeName 属性

nodeName 属性规定节点的名称。

  • nodeName 是只读的
  • 元素节点的 nodeName 与 标签名相同
  • 属性节点的 nodeName 与 属性名相同
  • 文本节点的 nodeName 始终是 #text
  • 文档节点的 nodeName 始终是 #document

3、3 nodeValue 属性

nodeValue 属性规定节点的值。

  • 元素节点的 nodeValue 是 undefined 或 null
  • 文本节点的 nodeValue 是文本本身
  • 属性节点的 nodeValue 是属性值

3、4 nodeType 属性

nodeType 属性返回节点的类型。nodeType 是只读的。

比较重要的节点类型有:

元素类型 NodeType
元素 1
属性 2
文本 3
注释 8
文档 9

4、HTML DOM 访问

访问 HTML 元素等同于访问节点,有以下几种方式:

  • 通过使用 getElementById() 方法
  • 通过使用 getElementsByTagName() 方法,如document.getElementsByTagName("p");
  • 通过使用 getElementsByClassName() 方法,如document.getElementsByClassName("intro");(其中class="intro",在IE5,6,7,8中无效)

5、HTML DOM - 修改

修改 HTML = 改变元素、属性、样式和事件。主要有以下几个不同的方面:

(1)、改变 HTML 内容——innerHTML(元素节点) 属性或 nodeValue (有内容的文本节点才能使用)属性

(2)、改变 CSS 样式——如document.getElementById("p2").style.color="blue";

(3)、改变 HTML 属性——如document.getElementById("image").src(属性名)="landscape.jpg";

(4)、创建新的 HTML 元素

    首先创建该元素(元素节点),然后把它追加到已有的元素上,有以下三种方法:

(5)、删除已有的 HTML 元素

  使用removeChild()方法

<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>
<script>(1)引用父元素
var parent=document.getElementById("div1"); //查找要删除元素的父元素
var child=document.getElementById("p1");    //查找要删除的元素
parent.removeChild(child); //从父元素中删除子元素(2)不引用父元素
var child=document.getElementById("p1");  //查找需要删除的元素
child.parentNode.removeChild(child);      //使用parentNode属性来查找父元素从而删除元素

</script>

(6)替换HTML元素

  使用 replaceChild() 方法。

  如 parent.replaceChild(para,child); 将child替换成para元素

(6)、改变事件(处理程序)

转载于:https://www.cnblogs.com/cjlalala/p/5804349.html

12、HTML DOM相关推荐

  1. 高德地图轨迹回放、点的弹跳效果、浏览器环境监测、设置地图的主题样式、GPS坐标转为高德坐标、地图加载提示、地图DOM事件、修改图层等API接口

    1.轨迹回放 https://lbs.amap.com/api/javascript-api/example/marker/replaying-historical-running-data 2.点的 ...

  2. 十二、虚拟 DOM 和 render() 函数(1)

    本章概要 虚拟DOM render()函数 Vue.js 之所以执行性能高,一个很重要的原因就是它的虚拟 DOM 机制. 12.1 虚拟 DOM 浏览器在解析 HTML 文档时,会将文档中的元素.注释 ...

  3. mysql所有班级名称和人数_mysql数据库优化课程---12、mysql嵌套和链接查询(查询user表中存在的所有班级的信息?)...

    mysql数据库优化课程---12.mysql嵌套和链接查询(查询user表中存在的所有班级的信息?) 一.总结 一句话总结: in:distinct:select * from class wher ...

  4. 石川es6课程---12、Promise

    石川es6课程---12.Promise 一.总结 一句话总结: 用同步的方式来书写异步代码,让异步书写变的特别简单 用同步的方式来书写异步代码 Promise 让异步操作写起来,像在写同步操作的流程 ...

  5. 黑马lavarel教程---12、lavarel验证码

    黑马lavarel教程---12.lavarel验证码 一.总结 一句话总结: 用插件的时候仔细看插件的版本要求 1.lavarel安装验证码插件的时候,如果(可选)需要定义自己的配置,则需要生成配置 ...

  6. 石川es6课程---1-2、ES6简介

    石川es6课程---1-2.ES6简介 一.总结 一句话总结: 从ECMAScript的历史发展来看,太顺了的时候总会遇到一挫折,比如ecma4 1.ECMAScript 和 JavaScript关系 ...

  7. 心得体悟帖---12、志向还是太短浅,目光也是

    心得体悟帖---12.志向还是太短浅,目光也是 一.总结 一句话总结: p*的*n,你为什么会觉得不可能了呢,这才是最大的问题. 1.无欲无求是非常糟糕的状态,修仙小说中的主角每时每刻都面临着巨大无比 ...

  8. Java黑皮书课后题第6章:6.1(数学:五角数)一个五角数被定义为n*(3*n-1)/2,其中n=1、2…。所以开始的几个数字就是1、5、12、22…,编写具有以下方法头的方法,返回一个五角数

    6.1(数学:五角数)一个五角数被定义为n*(3*n-1)/2,其中n=1.2-..所以开始的几个数字就是1.5.12.22-,编写具有以下方法头的方法,返回一个五角数 题目 题目概述 破题 代码 运 ...

  9. java 多线程缓存_[Java教程]【JAVA并发编程实战】12、使用condition实现多线程下的有界缓存先进先出队列...

    [Java教程][JAVA并发编程实战]12.使用condition实现多线程下的有界缓存先进先出队列 0 2016-11-29 17:00:10 package cn.study.concurren ...

最新文章

  1. YII2框架表单-model(验证)-HTML_help部件 URL_help部件 以注册页面为实例
  2. 排序算法(还需补充)
  3. 深入理解分布式技术 - 缓存高可用
  4. 利用 Selenium 自动化 web 测试【步骤详解】
  5. Tomcat7基于Redis的Session共享实战二
  6. C#完美实现透明窗体的绘制效果
  7. twitter storm源码走读(五)
  8. .Net5 WPF快速入门系列教程
  9. oracle性能优化求生指南_oracle性能优化:高水位线(HWM)详解--如何计算HWM
  10. 用Python做一个简单的翻译工具
  11. asp.net 读取mysql数据库_asp.net访问MySQL数据库
  12. Unknown symbol platform_driver_unregister (err 0)
  13. 在net.tcp模式下,由SvcUtil.exe生成代理类文件和配置文件(转)
  14. shell脚本定义日志输出函数
  15. 线性表部分知识点小结
  16. 面向对象java试题_经典面向对象试题,用Java做,要详细点的!先谢过了
  17. 计算机360u盘删除,如何删除U盘在电脑中的使用痕迹
  18. 怎么找到当地供应商_微商怎么找一手货源供货商(微商新手必看教程)
  19. HIT 软件构造 lab3实验报告
  20. 黑人是晒黑的吗_当您是互联网上的黑人时,无处可逃

热门文章

  1. 由浅入深:自己动手开发模板引擎——解释型模板引擎
  2. 一起学mini2440裸机开发(十)--mini2440外部中断实验
  3. C++/STL Bitset (转)
  4. mysql创建表的时候,字段尽量不要为NULL
  5. 汇编语言--串处理指令
  6. 贪心算法--会场安排问题
  7. 位域(bit fields)简介
  8. 引用可以是void类型吗?
  9. 给jdk写注释系列之jdk1.6容器(1):ArrayList源码解析
  10. linux 下安装 php 扩展 典型安装 mysql curl mb_string