相信很多初学前端的小伙伴,学了html,css,js之后,欣喜之余还有一丝小傲娇,没有想到那些大佬们口中又 提到了DOM树。你两眼一抹黑,年轻人总是要接受社会的爱(du)护(da)

DOM 是 Document Object Model(文档对象模型)的缩写。

为了那些被dom支配的日子,为了祖国的大好河山,为了下半辈子的幸福....

所以我们来谈谈什么是dom.

举个例子

我们日常生活中,经常会遇到一些写文档的工作,写一个论文.docx,等等。我们可以改文本的字号,添加标题,增加内容,改变页眉页脚……

但在我们初期写html页面时,一旦代码确定,那么页面的整体显示就会确定下来!打开浏览器浏览你的页面,内心细腻的你,发现一处<p>我喜欢吃藕!</p>,但你明明想写的是"我喜欢吃"。那我们怎么办呢?我们吭哧吭哧的回到你的html文件,改了那段文本标签。

你想,我要是能在浏览页面时像写.docx那样随便改文档就好了。正在你冥思苦想之际......

大佬们已经帮你想好了!

当你的服务器把html网页发送给用户时,用户的浏览器会解析你的html代码,生成dom树,css则会生成css规则树。有了这两个树,你的浏览器就可以渲染了!所有最终呈现的页面都是由你的浏览器渲染生成的,这也是为什么我们在检查页面时(f12),对内容的修改会直接反应到页面上。你为她画了晓妆,你给她改了晚妆

这个dom树有一个根节点<html>标签,由这个根,你的每一个<meta>标签,<p>标签,<title>,<h1>等等,以及他们的文本内容,在上面生长,我们可以很轻松的在这颗树上定位到他们的位置!这是给门牌号啊。这是数据的结构啊。

可上面说的明明是文档对象!

dom对象,在树形结构中,我们可以轻松定位到对应的标签位置,文本位置!

同时给大家提供了对这个结构修改-内容修改的内置函数,这也是对象模型的核心!

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

提供了哪些方法呢?无非就是,四大计算机古典名著《增》《删》《改》《查》

getElementById() 返回带有指定 ID 的元素。

getElementsByTagName() 返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)。

getElementsByClassName() 返回包含带有指定类名的所有元素的节点列表。

.etc

这就跟js联系到了一起吧!有木有?

我们先看一个简单的例子。

<!DOCTYPE html>
<html>
<head>
<script>
function myFunction() { document.getElementById("p1").innerHTML = "我喜欢吃";
}
</script>
</head>
<body>
<p id="p1">我喜欢吃藕</p>
<button type="button" onclick="myFunction()">试一试</button>
<script>
</script> <p>上面的段落被一段脚本改变了。</p>
</body>
</html>

呃呃呃,有了dom给你的文本定位,你拿到了p1家的门钥匙,月黑风高,你偷走了p1的……

id的添加是为了更好的定位,正是有了dom对象,这段js可以利用dom对象的方法,对dom树的内容进行修改。

于是乎我们可以在页面上通过js修改任何东西了。包括文本内容,层叠样式。

基于dom,利用js编程,我们可以让用户"动态的修改页面内容",也可以和服务器相连"面对不同的人显示不同的数据"。

所以建议学习的顺序是学完js再对底层的dom有一个理解。

参考文档:

W3school DOM

  • 如有什么不妥的地方还请各路大家提点

最新文章

  1. CAS代理配置
  2. Oracle的update语句优化研究
  3. GZFramwork快速开发框架之窗体设计说明
  4. 关于maven的一些常见用法
  5. 【栈思想、DP】NYOJ-15 括号匹配(二)
  6. mac usb转串口 连接树莓PI
  7. [018]C++ explicit构造函数
  8. XXX is not in the sudoers file.This incident will be reported
  9. GitBook 配置说明
  10. 一些常用数据库操作在mysql及sql server中实现方式的差异
  11. webstorm中关于vue的一些问题
  12. C# 读取XML节点属性值
  13. SpringMVC配置与使用
  14. react 会员登录
  15. ssh hibernate修改数据库
  16. LAMP简介与部署
  17. GridView自定义分页样式(上一页,下一页,到第几页)
  18. day57作业(包含data内容)
  19. pageadmin CMS Sql Server2008 R2数据库安装教程
  20. 委托批量处理Excel

热门文章

  1. ch1_6_3求解移动字符串问题
  2. Hive中静态分区和动态分区总结
  3. 别再面向 for 循环编程了,JDK 自带的观察者模式就很香!
  4. 「HTML+CSS」--自定义加载动画【010】
  5. 使用Gensim库对文本进行词袋、TF-IDF和n-gram方法向量化处理
  6. 从HotSpot VM源码看字符串常量池(StringTable)和intern()方法
  7. Cloudreve 自建云盘实践,我说了没人能限得了我的容量和速度!
  8. 软工案例分析之OJ
  9. Bounding Volume Hierarchies 加速结构
  10. 基于 Socket 的群聊聊天室(带图形界面,包含注册、登录、数据入库功能)