news 2026/2/9 5:13:30

前端dom,零基础入门到精通,收藏这篇就够了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前端dom,零基础入门到精通,收藏这篇就够了
前端知识之–DOM
  • 1.什么是DOM
    • HTML DOM 节点
  • 2.编程接口
  • 3. 查找元素
  • 4.HTML DOM 属性
    • innerHTML 属性(获取)
    • innerHTML 属性(替换)
    • nodeName 属性
    • childNodes 属性
    • nodeValue 属性
    • nodeType 属性
  • 5.操作文本内容
    • 1. 获取标签中间文本内容: innerText:
    • 2. 获取标签中间内容: innerHTML
    • 创建新的 HTML 元素 - appendChild()
    • 创建新的 HTML 元素 - insertBefore()
    • 删除已有的 HTML 元素-removeChild()
    • 替换 HTML 元素-replaceChild()
  • 6. 事件
    • HTML 事件属性
    • 使用 HTML DOM 来分配事件
    • onload 和 onunload 事件
    • onchange 事件
    • onmouseover 和 onmouseout 事件
    • onmousedown、onmouseup 以及 onclick 事件
  • 7.导航
    • 节点列表
    • HTML DOM 节点列表长度
    • 导航节点关系
    • DOM 根节点
    • childNodes 和 nodeValue
  • 8.HTML DOM 总结

1.什么是DOM

我们在前端的学习中经常会发现DOM这个高频词,那么什么是DOM呢?

DOM是文档对象模型(Document Object Model)的缩写。 是 W3C(万维网联盟)的标准。是一种用于HTML和XML文档的编程接口。它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式。是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。

HTML DOM 节点

在 HTML DOM 中,所有事物都是节点。DOM 是被视为节点树的 HTML。通过 HTML DOM,树中的所有节点均可通过 JavaScript 进行访问。所有 HTML 元素(节点)均可被修改,也可以创建或删除节点。

2.编程接口

可通过 JavaScript (以及其他编程语言)对 HTML DOM 进行访问。

所有 HTML 元素被定义为对象,而编程接口则是对象方法和对象属性。

方法是您能够执行的动作(比如添加或修改元素)。

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

3. 查找元素

document.getElementById("apple"); //找到id为appel的标签,因为id是唯一的,所以是element(ID选择器) document.getElementsByTagName("like"); //找到like标签的所有元素的节点列表(标签选择器) document.getElementsByClassName("pdd"); //找到class为pdd的标签的所有元素的节点列表(class选择器)

4.HTML DOM 属性

innerHTML 属性(获取)

获取元素内容的最简单方法是使用 innerHTML 属性。innerHTML 属性对于获取或替换 HTML 元素的内容很有用。

//获取 id="intro" 的 <p> 元素的 innerHTML: <html> <body> <p id="intro">Hello World!</p> <script> //getElementById 是一个方法,innerHTML是一个属性 var txt=document.getElementById("intro").innerHTML; document.write(txt); </script> </body> </html>

innerHTML 属性(替换)

<!DOCTYPE html> <html> <body> <p id="p1">Hello World!</p> <script> //找到id=p1的标签,替换内容 document.getElementById("p1").innerHTML="New text!"; </script> <p>上面的段落被一段脚本改变了。</p> </body> </html>

nodeName 属性

nodeName 属性规定节点的名称。

nodeName 始终包含 HTML 元素的大写字母标签名。

<!DOCTYPE html> <html> <body><p id="demo">请点击按钮来获得 body 元素子节点的节点名。</p> <button onclick="myFunction()">试一下</button> <script> function myFunction() { var txt=""; var c=document.body.childNodes;//返回节点的子节点集 for (i=0; i<c.length; i++)//使用 length 属性来确定子节点的数量,然后遍历所有的子节点并提取需要的信息 { txt=txt + c[i].nodeName + "<br>"; }; var x=document.getElementById("demo"); x.innerHTML=txt; } </script> <p><b>注释:</b>元素中的空格被视作文本,而文本被视作文本节点。</p> </body> </html>

P
#text
BUTTON
#text
SCRIPT //因为空隔,返回为#text
#text
P
#text

childNodes 属性

childNodes 属性返回节点的子节点集合,以 NodeList 对象。
可以使用 length 属性来确定子节点的数量,然后遍历所有的子节点并提取需要的信息。

nodeValue 属性

nodeValue 属性规定节点的值。

<!DOCTYPE html> <html> <body> <p id="intro">Hello World!</p> <script> x=document.getElementById("intro"); document.write(x.firstChild.nodeValue);//取回 <p id="intro"> 标签的文本节点值: </script> </body> </html>

nodeType 属性

nodeType 属性返回节点的类型。nodeType 是只读的。
元素类型 NodeType
元素 1
属性 2
文本 3
注释 8
文档 9

5.操作文本内容

document对象中有innerHTML、innerText这两个属性,都是获取document对象文本内容,但使用起来还是有区别的;

1. 获取标签中间文本内容: innerText:

设置或获取标签所包含的HTML+文本信息(从标签起始位置到终止位置全部内容,包括HTML标签,但不包括自身)

2. 获取标签中间内容: innerHTML

设置或获取标签所包含的文本信息(从标签起始位置到终止位置的内容,去除HTML标签,但不包括自身)

创建新的 HTML 元素 - appendChild()

如需向 HTML DOM 添加新元素,您首先必须创建该元素,然后把它追加到已有的元素上。(将新元素作为父元素的最后一个子元素进行添加)。

<div id="div1"> <p id="p1">This is a paragraph.</p> <p id="p2">This is another paragraph.</p> </div> <script> //创建了一个新的 <p> 元素 var para=document.createElement("p"); //创建文本节点,向 <p> 元素添加文本 var node=document.createTextNode("This is new."); //向 <p> 元素追加文本节点 para.appendChild(node); //查找到一个已有的元素 var element=document.getElementById("div1"); //向这个已存在的元素追加新元素 element.appendChild(para); </script>

创建新的 HTML 元素 - insertBefore()

在指定的已有子节点之前插入新的子节点。

<div id="div1"> <p id="p1">This is a paragraph.</p> <p id="p2">This is another paragraph.</p> </div> <script> var para=document.createElement("p"); var node=document.createTextNode("This is new."); para.appendChild(node); var element=document.getElementById("div1");//获取父节点 var child=document.getElementById("p1");//获取子节点 element.insertBefore(para,child);//在子节点前插入新的子节点 </script>

删除已有的 HTML 元素-removeChild()

如需删除 HTML 元素,您必须清楚该元素的父元素:

<div id="div1"> <p id="p1">This is a paragraph.</p> <p id="p2">This is another paragraph.</p> </div> <script> var parent=document.getElementById("div1");//查找 id="div1" 的元素 var child=document.getElementById("p1");//查找 id="p1" 的 <p> 元素 parent.removeChild(child);//从父元素中删除子元素 </script>

不能在不引用父元素的情况下删除某个元素,可以找到需要删除的子元素,然后使用parentNode属性来查找其父元素:

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

替换 HTML 元素-replaceChild()

<div id="div1"> <p id="p1">This is a paragraph.</p> <p id="p2">This is another paragraph.</p> </div> <script> //创建了一个新的 <p> 元素 var para=document.createElement("p"); //创建文本节点,向 <p> 元素添加文本 var node=document.createTextNode("This is new."); //向 <p> 元素追加文本节点 para.appendChild(node); //查找 id="div1" 的元素 var parent=document.getElementById("div1"); //查找 id="p1" 的 <p> 元素 var child=document.getElementById("p1"); //在父节点parent下,子节点para替换child parent.replaceChild(para,child); </script>

6. 事件

当事件发生时,可以执行 JavaScript,比如当用户点击一个 HTML 元素时。
如需在用户点击某个元素时执行代码,请把 JavaScript 代码添加到 HTML 事件属性中:

onclick=JavaScript

示例:当用户点击时,会改变 h1元素的内容:

<!DOCTYPE html> <html> <body> <h1 onclick="this.innerHTML='hello!'">请点击这段文本!</h1> </body> </html>

示例2:在本例中,会从事件处理程序中调用函数:

<!DOCTYPE html> <html> <head> <script> function changetext(id)//定义函数与传参 { id.innerHTML="hello!"; //参数id修改为hello } </script> </head> <body> //点击oclick调用changtext函数 <h1 onclick="changetext(this)">请点击这段文本!</h1> </body> </html>

HTML 事件属性

如需向 HTML 元素分配事件,可以使用事件属性。

实例
向 button 元素分配一个 onclick 事件:

<!DOCTYPE html> <html> <body> <p>点击按钮来执行 <b>displayDate()</b> 函数。</p> //点击调用displayDate函数 <button onclick="displayDate()">试一试</button> <script> function displayDate() { //获取demo元素,修改设置Date(当前时间) document.getElementById("demo").innerHTML=Date(); } </script> <p id="demo"></p> </body> </html>

使用 HTML DOM 来分配事件

HTML DOM 允许使用JavaScript 向 HTML 元素分配事件

实例
为 button 元素分配 onclick 事件:

<!DOCTYPE html> <html> <head> </head> <body> <p>点击按钮来执行 <b>displayDate()</b> 函数。</p> <button id="myBtn">试一试</button> <script> //名为 displayDate 的函数被分配给了 id=myButn" 的 HTML 元素 //当按钮被点击时,将执行函数。 document.getElementById("myBtn").onclick=function(){displayDate()}; function displayDate() { document.getElementById("demo").innerHTML=Date(); } </script> <p id="demo"></p> </body> </html>

onload 和 onunload 事件

当用户进入或离开页面时,会触发 onload 和 onunload 事件。
onload 事件可用于检查访客的浏览器类型和版本,以便基于这些信息来加载不同版本的网页。
(onload 和 onunload 事件可用于处理 cookies。)

示例:

<!DOCTYPE html> <html> <body onload="checkCookies()"> <script> function checkCookies() { //Navigator 对象包含有关浏览器的信息。 //cookieEnabled 属性可返回一个布尔值,如果浏览器启用了 cookie,该属性值为 true。如果禁用了 cookie,则值为 false。 if (navigator.cookieEnabled==true) { alert("Cookies are enabled") } else { alert("Cookies are not enabled") } } </script> <p>弹出的提示框会告诉你浏览器是否已启用 cookie。</p> </body> </html>

onchange 事件

用于输入字段的验证

<!DOCTYPE html> <html> <head> <script> function myFunction() { var x=document.getElementById("fname"); //当用户改变输入字段的内容时,将调用 upperCase() 函数。把所有小写字符转换为大写,把返回值重新赋给x.value x.value=x.value.toUpperCase(); } </script> </head> <body> 请输入你的英文名:<input type="text" id="fname" onchange="myFunction()"> <p>当你离开输入框时,被触发的函数会把你输入的文本转换为大写字母。</p> </body> </html>

onmouseover 和 onmouseout 事件

可用于在鼠标指针移动到或离开元素时触发函数

<!DOCTYPE html> <html> <body> <div //鼠标移到目标上 onmouseover="mOver(this)" //鼠标离开目标 onmouseout="mOut(this)" style="background-color:#D94A38;width:200px;height:50px;padding-top:25px;text-align:center;"> Mouse Over Me </div> <script> function mOver(obj) { obj.innerHTML="谢谢你" } function mOut(obj) { obj.innerHTML="把鼠标指针移动到上面" } </script> </body> </html>

onmousedown、onmouseup 以及 onclick 事件

onmousedownonmouseup以及onclick事件是鼠标点击的全部过程。首先当某个鼠标按钮被点击时,触发 onmousedown 事件,然后,当鼠标按钮被松开时,会触发 onmouseup 事件,最后,当鼠标点击完成时,触发 onclick 事件。

<!DOCTYPE html> <html> <body> <div onmousedown="mDown(this)" onmouseup="mUp(this)" style="background-color:#D94A38;width:200px;height:50px;padding-top:25px;text-align:center;"> 点击这里 </div> <script> function mDown(obj) { obj.style.backgroundColor="#1ec5e5"; obj.innerHTML="松开鼠标" } function mUp(obj) { obj.style.backgroundColor="#D94A38"; obj.innerHTML="谢谢你" } </script> </body> </html>

更多内容请查阅JavaScript 参考手册

7.导航

通过 HTML DOM,能够使用节点关系在节点树中导航。

节点列表

通过getElementsByTagName() 方法返回节点列表。节点列表是一个节点数组。

//选取文档中的所有 <p> 节点: var x=document.getElementsByTagName("p"); //访问第二个节点 y=x[1];

HTML DOM 节点列表长度

length 属性定义节点列表中节点的数量。

<!DOCTYPE html> <html> <body> <p>Hello World!</p> <p>DOM 很有用!</p> <p>本例演示 <b>length</b> 属性。</p> <script> //返回节点列表长度 x=document.getElementsByTagName("p"); //遍历 for (i=0;i<x.length;i++) { document.write(x[i].innerHTML); //每次打印分行 document.write("<br>"); } </script> </body> </html> }

导航节点关系

能够使用三个节点属性:parentNode(父节点)、firstChild(首个元素) 以及 lastChild (最后一个元素),在文档结构中进行导航。

<!DOCTYPE html> <html> <body> <p id="intro">Hello World!</p> <script> x=document.getElementById("intro"); // document.write(x.firstChild.nodeValue); </script> </body> </html>

DOM 根节点

这里有两个特殊的属性,可以访问全部文档:

<html> <body> <p>Hello World!</p> <div> <p>DOM 很有用!</p> <p>本例演示 <b>document.body</b> 属性。</p> </div> <script> alert(document.body.innerHTML); </script> </body> </html>

childNodes 和 nodeValue

除了 innerHTML 属性,也可以使用 childNodes 和 nodeValue 属性来获取元素的内容。

示例:获取 id=“intro” 的

元素的值:

<!DOCTYPE html> <html> <body> <p id="intro">Hello World!</p> <script> txt=document.getElementById("intro").childNodes[0].nodeValue; document.write(txt); </script> </body> </html>

getElementById 是一个方法,而 childNodes 和 nodeValue 是属性。

8.HTML DOM 总结

HTML DOM 可以用来增强网站的动态交互性,操作 HTML 元素以响应不同的场景。

2025开年,AI技术打得火热,正在改变前端人的职业命运:

阿里云核心业务全部接入Agent体系;

字节跳动30%前端岗位要求大模型开发能力;

腾讯、京东、百度开放招聘技术岗,80%与AI相关……

大模型正在重构技术开发范式,传统CRUD开发模式正在被AI原生应用取代!

最残忍的是,业务面临转型,领导要求用RAG优化知识库检索,你不会;带AI团队,微调大模型要准备多少数据,你不懂;想转型大模型应用开发工程师等相关岗,没项目实操经验……这不是技术焦虑,而是职业生存危机!

曾经React、Vue等热门的开发框架,已不再是就业的金钥匙。如果认为会调用API就是懂大模型、能进行二次开发,那就大错特错了。制造、医疗、金融等各行业都在加速AI应用落地,未来企业更看重能用AI大模型技术重构业务流的技术人。

如今技术圈降薪裁员频频爆发,传统岗位大批缩水,相反AI相关技术岗疯狂扩招,薪资逆势上涨150%,大厂老板们甚至开出70-100W年薪,挖掘AI大模型人才!

不出1年 “有AI项目开发经验”或将成为前端人投递简历的门槛。

风口之下,与其像“温水煮青蛙”一样坐等被行业淘汰,不如先人一步,掌握AI大模型原理+应用技术+项目实操经验,“顺风”翻盘!

大模型目前在人工智能领域可以说正处于一种“炙手可热”的状态,吸引了很多人的关注和兴趣,也有很多新人小白想要学习入门大模型,那么,如何入门大模型呢?

下面给大家分享一份2025最新版的大模型学习路线,帮助新人小白更系统、更快速的学习大模型!

2025最新版CSDN大礼包:《AGI大模型学习资源包》免费分享**

一、2025最新大模型学习路线

一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1级别:AI大模型时代的华丽登场

L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理,关键技术,以及大模型应用场景;通过理论原理结合多个项目实战,从提示工程基础到提示工程进阶,掌握Prompt提示工程。

L2级别:AI大模型RAG应用开发工程

L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3级别:大模型Agent应用架构进阶实践

L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体;同时还可以学习到包括Coze、Dify在内的可视化工具的使用。

L4级别:大模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调;并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握;而L3 L4更多的是通过项目实战来掌握大模型的应用开发,针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

二、大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

三、大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

四、大模型项目实战

学以致用,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

五、大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版CSDN大礼包:《AGI大模型学习资源包》免费分享

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/7 6:58:31

12、Windows 开发中的媒体应用与搜索魅力

Windows 开发中的媒体应用与搜索魅力 1. 媒体应用开发 在应用开发中,媒体的使用是一个重要的方面。对于视频捕获功能,当我们将代码嵌入应用时,会发现缺少一个关键元素——取景器,即无法看到相机当前所指向的内容。 在使用 MediaCapture 类进行视频捕获时,JavaScript …

作者头像 李华
网站建设 2026/2/6 13:42:32

Qt 5.14.0 入门框架开发全流程深度解析

目录前言第一章&#xff1a;Qt SDK 的环境搭建与配置1.1 获取安装包与镜像源选择1.2 安装向导与组件筛选1.3 环境变量的配置原理1.4 Qt 核心辅助工具概览第二章&#xff1a;Qt 项目的创建与文件架构解析2.1 创建流程2.2 源代码深度剖析2.2.1 main.cpp&#xff1a;程序入口2.2.2…

作者头像 李华
网站建设 2026/2/7 22:11:14

19、应用货币化:全面指南

应用货币化:全面指南 1. 应用授权 在开发可盈利应用时,应用授权是一个关键环节。我们主要通过 CurrentApp 类与 Windows 应用商店进行交互,但在开发阶段,为了方便测试,通常会使用 CurrentAppSimulator ,它依赖于 WindowsStoreProxy.xml 文件来模拟应用商店的授权…

作者头像 李华
网站建设 2026/2/5 17:11:56

【Open-AutoGLM 技术突破】:3个关键创新点揭示中国自研AI Agent新范式

第一章&#xff1a;Open-AutoGLM 技术突破的背景与意义随着大语言模型在自然语言处理领域的广泛应用&#xff0c;对高效、可扩展且具备自主推理能力的模型架构需求日益迫切。传统模型在复杂任务中往往依赖人工干预与多阶段流水线设计&#xff0c;导致推理延迟高、维护成本大。O…

作者头像 李华
网站建设 2026/2/6 20:45:47

Windows自动点击器:解放双手的智能鼠标操作助手

在数字时代的日常工作中&#xff0c;我们常常需要面对大量重复性的鼠标点击任务。无论是游戏中的资源收集&#xff0c;还是办公软件的数据录入&#xff0c;这些机械化的操作不仅耗费时间&#xff0c;还容易让人感到疲劳。Windows自动点击器应运而生&#xff0c;为您提供了一种智…

作者头像 李华