博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript学习笔记:DOM节点概述
阅读量:6658 次
发布时间:2019-06-25

本文共 3283 字,大约阅读时间需要 10 分钟。

0x01:

DOM是javascript操作网页的接口,全称为文档对象模型(Document Object Model)。它的作用是将网页转为一个javascript对象,从而可以使用javascript对网页进行各种操作(比如增删内容)。浏览器会根据DOM模型,将HTML文档解析成一系列的节点,再由这些节点组成一个树状结构。DOM的最小组成单位叫做节点(node),文档的树形结构(DOM树)由12种类型的节点组成。本文将主要说明DOM节点类型。

HTML DOM 定义了访问和操作 HTML 文档的标准方法,DOM 将 HTML 文档表达为树结构。(此时应该放上W3C的经典图)
按照个人的理解,css对应的标签、js对应的元素、dom对应的节点,三个名称其实表示同一个内容,只是在不同的技术名称不同。
javascript学习笔记:DOM节点概述

一般地,节点至少拥有nodeType、nodeName和nodeValue这三个基本属性。节点类型不同,这三个属性的值也不相同

0x02:nodeType

  nodeType属性返回节点类型的常数值。不同的类型对应不同的常数值,12种类型分别对应1到12的常数值

元素节点               Node.ELEMENT_NODE(1)属性节点                   Node.ATTRIBUTE_NODE(2)文本节点                   Node.TEXT_NODE(3)CDATA节点                   Node.CDATA_SECTION_NODE(4)实体引用名称节点       Node.ENTRY_REFERENCE_NODE(5)实体名称节点           Node.ENTITY_NODE(6)处理指令节点           Node.PROCESSING_INSTRUCTION_NODE(7)注释节点                    Node.COMMENT_NODE(8)文档节点                    Node.DOCUMENT_NODE(9)文档类型节点          Node.DOCUMENT_TYPE_NODE(10)文档片段节点          Node.DOCUMENT_FRAGMENT_NODE(11)DTD声明节点               Node.NOTATION_NODE(12)

DOM定义了一个Node接口,这个接口在javascript中是作为Node类型实现的,而在IE8-浏览器中的所有DOM对象都是以COM对象的形式实现的。所以,IE8-浏览器并不支持Node对象的写法

//在标准浏览器下返回1,而在IE8-浏览器中报错,提示Node未定义console.log(Node.ELEMENT_NODE);//1

nodeName

  nodeName属性返回节点的名称

nodeValue

  nodeValue属性返回或设置当前节点的值,格式为字符串

  接下来,将按照节点类型的常数值对应顺序,从1到12进行详细说明

# 0x02:元素节点 元素节点element对应网页的HTML标签元素。元素节点的节点类型nodeType值是1,节点名称nodeName值是大写的标签名,nodeValue值是null

  以body元素为例

// 1 'BODY' nullconsole.log(document.body.nodeType,document.body.nodeName,document.body.nodeValue)console.log(Node.ELEMENT_NODE === 1);//true

特性节点

  元素特性节点attribute对应网页中HTML标签的属性,它只存在于元素的attributes属性中,并不是DOM文档树的一部分。特性节点的节点类型nodeType值是2,节点名称nodeName值是属性名,nodeValue值是属性值

  现在,div元素有id="test"的属性

文本节点

  文本节点text代表网页中的HTML标签内容。文本节点的节点类型nodeType值是3,节点名称nodeName值是'#text',nodeValue值是标签内容值

  现在,div元素内容为'测试'

测试

CDATA节点

  CDATASection类型只针对基于XML的文档,只出现在XML文档中,表示的是CDATA区域,格式一般为

<![CDATA[

]]>
  该类型节点的节点类型nodeType的值为4,节点名称nodeName的值为'#cdata-section',nodevalue的值是CDATA区域中的内容
实体引用名称节点
  实体是一个声明,指定了在XML中取代内容或标记而使用的名称。 实体包含两个部分, 首先,必须使用实体声明将名称绑定到替换内容。 实体声明是使用 <!ENTITY name "value"> 语法在文档类型定义(DTD)或XML架构中创建的。其次,在实体声明中定义的名称随后将在 XML 中使用。 在XML中使用时,该名称称为实体引用。

  实体引用名称节点entry_reference的节点类型nodeType的值为5,节点名称nodeName的值为实体引用的名称,nodeValue的值为null

//实体名称
//实体名称引用
Published by &publisher;

实体名称节点

  上面已经详细解释过,就不再赘述

  该节点的节点类型nodeType的值为6,节点名称nodeName的值为实体名称,nodeValue的值为null

处理指令节点

  处理指令节点ProcessingInstruction的节点类型nodeType的值为7,节点名称nodeName的值为target,nodeValue的值为entire content excluding the target

注释节点

  注释节点comment表示网页中的HTML注释。注释节点的节点类型nodeType的值为8,节点名称nodeName的值为'#comment',nodeValue的值为注释的内容

  现在,在id为myDiv的div元素中存在一个<!-- 我是注释内容 -->

文档节点

  文档节点document表示HTML文档,也称为根节点,指向document对象。文档节点的节点类型nodeType的值为9,节点名称nodeName的值为'#document',nodeValue的值为null。

文档类型节点

  文档类型节点DocumentType包含着与文档的doctype有关的所有信息。文档类型节点的节点类型nodeType的值为10,节点名称nodeName的值为doctype的名称,nodeValue的值为null。

Document

文档片段节点

  文档片段节点DocumentFragment在文档中没有对应的标记,是一种轻量级的文档,可以包含和控制节点,但不会像完整的文档那样占用额外的资源。该节点的节点类型nodeType的值为11,节点名称nodeName的值为'#document-fragment',nodeValue的值为null。

DTD声明节点

  DTD声明节点notation代表DTD中声明的符号。该节点的节点类型nodeType的值为12,节点名称nodeName的值为符号名称,nodeValue的值为null。

0x03

在这12种DOM节点类型中,有一些适用于XML文档,有一些是不常用的类型。而对于常用类型,后面会陆续进行详细介绍,本文对这12种节点类型只做概述

转载于:https://blog.51cto.com/wt7315/2067189

你可能感兴趣的文章
ajax请求解析springmvc返回的json数据
查看>>
【原】iOS学习42即时通信之XMPP(1)
查看>>
数组乱序排列
查看>>
oracle 密码默认180天过期
查看>>
fre7 offonline for firefox
查看>>
类linux系统/proc/sysrq-trigger文件功能作用
查看>>
一周动态
查看>>
Scrapy使用详细记录
查看>>
Python总体架构图
查看>>
Docker 入门学习
查看>>
C/C++ 笔试、面试题目大汇总(转)
查看>>
Tuning 05 Sizing other SGA Structure
查看>>
Ubuntu 16.04 + CUDA 8.0 + cuDNN v5.1 + TensorFlow(GPU support)安装配置详解
查看>>
文件比较软件有哪些
查看>>
Beyond Compare切换到浏览模式的步骤
查看>>
进程、线程与应用程序域
查看>>
HDU 1872:稳定排序
查看>>
MFCchuangkou shanshuo
查看>>
莎莎的简历
查看>>
idea使用maven-archetype-webapp创建多模块项目无java文件夹和resources文件夹
查看>>