JavaScript快速入门-DOM对象

作者:@skyflask
转载本文请注明出处:https://www.cnblogs.com/skyflask/p/9027357.html


目录

一、概述
1、什么是 DOM?
2、DOM树
3、节点属性(自身属性和导航属性)
4、nodeName、nodeType、nodeValue
5、被忽略的文本
6、推荐的导航属性
7、节点之间的关系 
8、Node访问
9、Node操作
10、Node事件

一、概述

1、什么是 DOM?

DOM 是 W3C(万维网联盟)的标准。DOM 定义了访问 HTML 和 XML 文档的标准:

"W3C 文档对象模型(DOM)是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。"

W3C DOM 标准被分为 3 个不同的部分:

  • 核心 DOM - 针对任何结构化文档的标准模型
  • XML DOM - 针对 XML 文档的标准模型
  • HTML DOM - 针对 HTML 文档的标准模型
  • 什么是 XML DOM? ->XML DOM 定义了所有 XML 元素的对象和属性,以及访问它们的方法。
  • 什么是 HTML DOM?->HTML DOM 定义了所有 HTML 元素的对象和属性,以及访问它们的方法。

2、DOM树

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

  • 整个文档是一个文档节点(document对象)
  • 每个 HTML 元素是元素节点(element 对象)
  • HTML 元素内的文本是文本节点(text对象)
  • 每个 HTML 属性是属性节点(attribute对象)
  • 注释是注释节点(comment对象)

3、节点属性(自身属性和导航属性)

节点(自身)属性:本身具有的属性。

  • attributes - 节点(元素)的属性节点
  • nodeType – 节点类型,nodeType 是只读的。
  • nodeValue – 节点值
  • nodeName – 节点名称
  • innerHTML - 节点(元素)的文本值

导航属性:操作节点的属性。

  • parentNode - 节点(元素)的父节点 (推荐)
  • firstChild – 节点下第一个子元素
  • lastChild – 节点下最后一个子元素
  • childNodes - 节点(元素)的子节点 

4、nodeName、nodeType、nodeValue

(一)nodeName 属性含有某个节点的名称。

元素节点的 nodeName 是标签名称

属性节点的 nodeName 是属性名称

文本节点的 nodeName 永远是 #text

文档节点的 nodeName 永远是 #document

注释:nodeName 所包含的 XML 元素的标签名称永远是大写的

 

(二)nodeValue

对于文本节点,nodeValue 属性包含文本。

对于属性节点,nodeValue 属性包含属性值。

nodeValue 属性对于文档节点和元素节点是不可用的。

 

(三)nodeType

nodeType 属性可返回节点的类型。

最重要的节点类型是:

元素类型 节点类型

元素element 1

属性attr 2

文本text 3

注释comments 8

文档document 9

 

5、被忽略的文本

我们先看一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html lang="UTF8">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<div id="div1">
    <div id="div2"></div>
    <p>hello world!</p>
</div>
</body>
 
<script>
    var div=document.getElementById("div2");
    console.log(div.nextSibling.nodeName);  //结果会是神马??
</script>
 
</html>

  

上面的例子,咋看会输出p节点,但是,结果恰恰不是!

 

6、推荐的导航属性

parentElement             // 父节点标签元素,通过父节点再找其他节点
children                  // 所有子标签,一次获取所有子标签
firstElementChild         // 第一个子标签元素
lastElementChild          // 最后一个子标签元素
nextElementtSibling       // 下一个兄弟标签元素
previousElementSibling    // 上一个兄弟标签元素

7、节点之间的关系 

父(parent),子(child)和同胞(sibling)等术语用于描述这些关系。

父节点拥有子节点。同级的子节点被称为同胞(兄弟或姐妹)。

  • 在节点树中,顶端节点被称为根(root)节点
  • 每个节点都有父节点、除了root节点(它没有父节点)
  • 一个节点可拥有任意数量的子节点(child-node)
  • 同胞是拥有相同父节点的节点(sibling-node)

 

8、Node访问

  • 通过使用 getElementById() 方法 【id】
  • 通过使用 getElementsByName() 方法 【name】
  • 通过使用 getElementsByTagName() 方法 --支持局部查找【标签名】
  • 通过使用 getElementsByClassName() 方法 --支持局部查找【类名】

9、Node操作

修改 HTML DOM 意味着许多不同的方面:

  • 改变 HTML 内容
  • 改变 CSS 样式
  • 改变 HTML 属性
  • 创建新的 HTML 元素
  • 删除已有的 HTML 元素
  • 替换已有的HTML元素
  • 使用事件
  • 关于class的操作

a、改变HTML内容(innerHTML)

  document.getElementById("p1").innerHTML="New text!";

b、改变CSS样式

  <p id="p2">Hello world!</p>

  document.getElementById("p2").style.color="blue";

  

 
c、改变HTML属性

d、创建新的HTML元素

e、删除已有的HTML元素

注意:

能否在不引用父元素的情况下删除某个元素?
很抱歉。DOM 需要了解您需要删除的元素,以及它的父元素。

常用删除元素方法:

1
2
var child=document.getElementById("p1");
child.parentNode.removeChild(child);

  

f、替换HTM元素

1
2
3
4
5
6
7
8
9
10
11
12
13
<div id="div1">
<p id="p1">这是一个段落。</p>
<p id="p2">这是另外一个段落。</p>
</div>
  
<script>
var parent=document.getElementById("div1");  #获取父级元素
var child=document.getElementById("p1");   #获取子元素
var para=document.createElement("p");   #创建p标签
var node=document.createTextNode("这是一个新的段落。"); #给p标签添加内容<p>这是一个新的段落。</p>
para.appendChild(node);  #把内容放入p里面
parent.replaceChild(para,child);  #父元素添加子节点
</script>

  

g、使用事件

1
<input type="button" onclick="document.body.style.backgroundColor='lavender';" value="修改背景颜色">

  

h、class的操作

  •  elementNode.className
  •  elementNode.classList.add
  •  elementNode.classList.remove

 

10、Node事件

HTML DOM 允许 JavaScript 对 HTML 事件作出反应。
常用的事件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
onclick        当用户点击某个对象时调用的事件句柄。
ondblclick     当用户双击某个对象时调用的事件句柄。
 
onfocus        元素获得焦点。               //练习:输入框
onblur         元素失去焦点。               应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange       域的内容被改变。             应用场景:通常用于表单元素,当元素内容被改变时触发.(三级联动)
 
onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress     某个键盘按键被按下并松开。
onkeyup        某个键盘按键被松开。
onload         一张页面或一幅图像完成加载。
onmousedown    鼠标按钮被按下。
onmousemove    鼠标被移动。
onmouseout     鼠标从某元素移开。
onmouseover    鼠标移到某元素之上。
onmouseleave   鼠标从元素离开
 
onselect      文本被选中。
onsubmit      确认按钮被点击。

实例:

1、鼠标点击(onclick)

 

2、鼠标双击(ondbclick)

  注意:onclick后面可以直接写函数的内容,也可以直接调用函数。

 

3、鼠标聚焦(onfocus)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
<script>
function myFunction(x)
{
x.style.background="yellow";
}
</script>
</head>
<body>
 
请输入内容:<input type="text" onfocus="myFunction(this)">
 
<p>当输入内容获得焦点时,会触发颜色背景为黄色。</p>
 
</body>
</html>

  

结果为:

 

 

 

4、按键改变(onmousedown和onmouseup)

  

5、鼠标改变(onmouseover和onmouseout)

  

6、文本选中(onselect)

 

  

7、改变(onchange)

  

8、确认按钮被点击



  




posted @   skyflask  阅读(372)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示