JS DOM 编程复习笔记(一)

今天我们来复习JavaScript中的文档对象模型----DOM。

什么是DOM

DOM是三个英文单词的缩写,Document Object Model 简称为DOM,是用来操作HTML和XML的编程接口(API)。

DOM文档像一颗节点树,并且提供了API,让我们可以添加、修改和删除文档中的节点。

注意,DOM并不是JavaScript所提供的,DOM是一种跨平台且独立于语言的用来操作HMTL和XML的方式。

文档中的节点

DOM将HTML表示为树形的节点层次结构,比如下面的HTML

<html>
  <head>
    <title>JavaScript DOM</title>
  </head>
  <body>
    <p>Hello DOM!</p>
  </body>
</html>

上面的HTML结构就像下面的树状结构

JavaScript-DOM

在这个DOM树中,Document是根节点,根节点有一个子节点,它是<HTML>元素。<HTML>元素也称之为Document元素。

每个HTML只能有一个Document元素,也就是<html>只能有一个,每个标签都可以由DOM树中的一个节点表示。

Node节点类型

DOM树中的每个节点都有节点类型,JavaScript使用整数来标识节点的类型。

下面是一些节点的类型

常量描述
Node.ELEMENT_NODE1元素节点,像<p><div>
Node.TEXT_NODE3元素中的文本节点
Node.CDATA_SECTION_NODE4<!CDATA[[ … ]]>`节点
Node.PROCESSING_INSTRUCTION_NODE7XML文档的<?xml-stylesheet … ?>节点
Node.COMMENT_NODE8注释节点 <!-- … -->
Node.DOCUMENT_NODE9Document节点
Node.DOCUMENT_TYPE_NODE10<!DOCTYPE html>节点
Node.DOCUMENT_FRAGMENT_NODE11DocumentFragment 节点

使用nodeType属性可以获取节点的类型

node.nodeType

根据nodeType去判断节点的类型是否是元素类型

if (node.nodeType == Node.ELEMENT_NODE) {
  // 节点为元素类型
}

nodeNamenodeValue 属性

节点还有两个重要属性,分别为nodeNamenodeValue ,它们提供关于节点的特定信息

if (node.nodeType == Node.ELEMENT_NODE) {
  let name = node.nodeName; // <div>的nodeName为DIV
}

节点和元素

有时我们会混淆节点(Node)和元素(Element)的叫法。

节点是DOM树中任何对象的通用名称。它可以是任何内置的DOM元素,比如Document,或者它可以是HTML文档中指定的任何HTML标签,比如<div><p>

而元素是指Node.ELEMENT_NODE为1的节点。

通过下图可清晰看出Node和Element间的关系和区别

Document-Object-Model-in-JavaScript

getElementById()querySelector()方法会返回一个Element类型的对象,而getElementsByTagName()querySelectorAll()方法返回NodeList,它是节点的集合。

Node节点关系

任何节点都与DOM树中的其他节点有关系,这些关系就像是家谱一样。

比如<body><html>节点的子节点,而< html><body> 节点的父节点,<body> 节点是 <head> 节点的兄弟节点,因为它们有相同的父亲<html>

下图说明了节点之间的关系:

JavaScript-DOM-Node-Relationships

总结

  • HTML或XML文档的节点树像家谱一样。
  • 每个标签都有nodeType属性来表示它的类型
  • 元素Element一般是指Node.ELEMENT_NODE的节点
  • 在DOM树中,一个节点肯定会与其他节点有关系。

今天我们复习了DOM的一些基础知识,明天继续。

如果你想跟着我一起复习DOM知识,微信搜索【小帅的编程笔记】,每天更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值