DOM(Document Object Model)全称文档对象模型。DOM其实是JavaScript操作网页的一套API接口,定义了访问和操作HTML文档的标准。定义了所有HTML元素的对象和属性,以及访问他们的方法。浏览器会根据DOM模型,将结构化文档解析成一系列的节点,再由这些节点组成一个树状结构,所以它的作用是将网页转为一个个节点对象,从而可以用脚本对其进行各种操作获取,修改,添加或删除HTML元素。

1.DOM节点

文档对象是由不同类型的节点对象组成的,所以要操作文档对象,我们得知道有哪些节点对象。节点对象都有一个nodeType属性,通常是由一个数值常量表示

(1)常见的节点对象:

ELEMENT_NODE(1),元素节点对象
ATTRIBUTE_NODE(2),属性节点对象
TEXT_NODE(3),文本节点对象
COMMENT_NODE(8),注释节点对象
DOCUMENT_NODE(9),文档节点对象
DOCUMENT_TYPE_NODE(10),文档类型节点对象
DOCUMENT_FRAGMENT_NODE(11),文档片段节点对象

(2)节点对象之间的关系

整个文档对象,是由不同的节点对象组成,这些节点之间都存在在关系,常见的关系有:

parentNode,父节点
previousSibling,前一个兄弟节点
nextSibling,后一个兄弟节点
firstChild,第一个子节点
lastChild,最后一个字节点
childNodes,子节点集合
ownerDocument, 顶层文档对象,即document对象。
parentElement,返回当前节点的父Element节点

(3)操作节点对象的方法

appendChild(node);向childNodes列表的末尾添加一个节点
insertBefore(newnode,position);往childNodes列表中的某个固定的位置插入一个节点,要是参照节点为null,默认加在末尾
replaceChild(newnode,position)替换某个节点
removeChild(node);删除某个节点
cloneNode(true/false);克隆对象
contains(),接受一个节点作为参数,返回一个布尔值,表示参数节点是否为当前节点的后代节点。
isEqualNode(),
normalize(), 清理当前节点内部的所有Text节点
hasChildNodes()

理解HTML DOM的更多相关文章

  1. 深度理解 Virtual DOM

    目录: 1 前言 2 技术发展史 3 Virtual DOM 算法 4 Virtual DOM 实现 5 Virtual DOM 树的差异(Diff算法) 6 结语 7 参考链接 1 前言 我会尽量把 ...

  2. 全面理解虚拟DOM(1)

    最近一两年前端最火的技术莫过于 reactjs,angularJS,vuejs,即便你没用过也可能听过,像ReactJS由业界顶尖的互联网公司facebook提出,其本身有很多先进的设计思路,比如页面 ...

  3. 全面理解虚拟DOM,实现虚拟DOM

    1.为什么需要虚拟DOM DOM是很慢的,其元素非常庞大,页面的性能问题鲜有由JS引起的,大部分都是由DOM操作引起的.如果对前端工作进行抽象的话,主要就是维护状态和更新视图:而更新视图和维护状态都需 ...

  4. 抛开react,如何理解virtual dom和immutability

    去年以来,React的出现为前端框架设计和编程模式吹来了一阵春风.很多概念,无论是原本已有的.还是由React首先提出的,都因为React的流行而倍受关注,成为大家研究和学习的热点.本篇分享主要就聚焦 ...

  5. 理解Shadow DOM(一)

    1. 什么是Shadow DOM? Shadow DOM 如果按照英文翻译的话可以理解为 影子DOM, 何为影子DOM呢?可以理解为一般情况下使用肉眼看不到的DOM结构,那如果一般情况下看不到的话,那 ...

  6. 如何理解Virtual DOM

    什么是虚拟DOM 接下来用vdom(Virtual DOM)来简称为虚拟DOM. 指的是用JS模拟的DOM结构,将DOM变化的对比放在JS层来做.换而言之,虚拟DOM就是JS对象.如下DOM结构: & ...

  7. 理解 Virtual DOM(摘)及评价

    框架并没有提高web的性能,只是让开发者更加专注的完成业务逻辑,而不用过渡的考虑性能上的优化.如果以性能来比的话,框架是绝对比不过优化后的原生代码的. 二.什么是Virtual DOM Virtual ...

  8. 怎么理解虚拟 DOM?

    一.前言 现在web前端的开发,对于MVVM框架的运用,那是信手拈来,用的飞起.一个xxx-cli工具,就能初始化一套模板,再填充业务代码,打包部署即可.但是会用,是一个方面,大家有没有底层深入思考一 ...

  9. Virtual DOM 虚拟DOM的理解(转)

    作者:戴嘉华 转载请注明出处并保留原文链接( #13 )和作者信息. 目录: 1 前言 2 对前端应用状态管理思考 3 Virtual DOM 算法 4 算法实现 4.1 步骤一:用JS对象模拟DOM ...

随机推荐

  1. ie6的display:inline-block实现

    摘抄自原文链接 简单来说display:inline-block,就是可以让行内元素或块元素变成行内块元素,可以不float就能像块级元素一样设置宽高,又能像行内元素一样轻松居中. 在ie6中给div ...

  2. .NET 中使用阿里云短信的 API 接口

    小弟初来乍到,这也是我的第一篇文章,写的不好的地方还望指正.谢谢各位! 引言 短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信 ...

  3. IntelliJ IDEA+Mysql connecter/j JDBC驱动连接

    在IntelliJ IDEA中用connecter/j jdbc驱动连接MYSQL 以下是解决过程,待整合...有点懒,有空再改 官方文档:https://www.cnblogs.com/cn-chy ...

  4. Javaweb之EL表达式

    1.EL表达式简介 EL全名为Expression Language.EL的主要作用为: 获取数据:EL表达式主要用于替换jsp页面中的脚本表达式,以从各种类型的web域中检索java对象,获取数据. ...

  5. 基于bootstrap的图片轮播功能

    插入js及css支持: <link rel="stylesheet" href="css/bootstrap.min.css"/> <scri ...

  6. javascrapy 正则表达式验证 IP和MAC

    var psrc = $('input[name="psrc"]').val() var hwsrc = $('input[name="hwsrc"]').va ...

  7. PL/SQL: numeric or value error: character to number conversion error

    在最简单的plsql块编程中出现这个错误,是因为 DBMS_OUTPUT.PUT_LINE('the x is '+x);这里面不能用“+”,而是要用“||” DECLARE x number; ; ...

  8. 爬取地图列表并下载-node.js

    var fs = require('fs'); var request = require('request'); var cheerio = require('cheerio'); var url ...

  9. sql:查询创建表的结构

    --显示所有用户表: --1 SELECT SCHEMA_NAME(schema_id) As SchemaName , name As TableName from sys.tables ORDER ...

  10. 通过JavaScript创建Qml对象

    有两种方法可以创建,都是全局对象Qt提供的方法 一:用Qt.createComponent加载一个qml文件并创建Component 二:用Qt.createQmlObject从一个qml字符串创建C ...