稀土掘金 稀土掘金

【JavaScript】什么是DOM | 如何使用JS操作DOM

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

本文主要内容:介绍了DOM的定义与作用,总结了一些在JS中对DOM可以进行的操作

在简单地学习完基础的react内容并且自己尝试开发一个小项目后,最大的感触是来自JS基础的不扎实。所以接下来会踏踏实实地总结一些JS的相关知识点,来进一步加深对JavaScript的理解。

什么是DOM

在我学习什么是DOM时,感觉总是有点懵懵懂懂,好像明白是什么,但是要用自己的话来解释一下DOM,就只会展开它的缩写顺便翻译一下,Document Object Model(文本对象模型)

而在读了 这篇文章后,里面有一段如下的话,瞬间解答了我的困惑

If we consider the phrase  'Document Object Model' , it's actually quite a good name to explain the underlying concept. It says that the DOM is an object-based model of a document.

所以现在在我的理解中,普通的 HTML 文件是一个文本文件,是纯粹的文档。

而 DOM 是一个对象模型,里面的像<body> <head>什么的都是可供 JS 操作的属性。所以就可以引用MDN里的一个公式

API (web 或 XML 页面) = DOM + JS

DOM 经过 JS 的操作后,能够生成网页

如何操作DOM

了解了什么是 DOM ,以及网页需要 DOM 经过操作生成后,接下来就详细介绍一下 JS 对 DOM 可以进行哪些操作。

获取DOM元素

在操作之前当然要先获取要被操作的元素,本文介绍三种方法

getElementById()

这是我目前最常用的方法,每次在 react 中将 App.js 里写的一大堆东西 render 到 id="root" 的 <div> 时,都会用到这个方法

所以看一个小例子,

<head>
    <title>DOM</title>
</head>
<body>
    <div id="test">Hello, world!</div>
</body>
<script src="./index.js"></script>
</html>

这是创建的一个HTML文件,此时就可以将整体看作一个DOM。下面将对它进行操作

const text1 = document.getElementById("test")
console.log(text1)

可以看到我们获取了id="test"的<div>元素,并且将它打印了出来

image.png

querySelector()

这个方法也是类似,不过有更多的可操作余地

比如说这时我们还是想根据 id 来获取上面HTML文件中元素,那么我们可以使用下面的语句

const text1 = document.querySelector("#test")
console.log(text1)

使用#代表使用id进行查询

此外还有另外两种类似 CSS 的查询方法,但是它们获取的对象也相应的复杂了不少

const text1 = document.querySelector("div")
console.log(text1)

直接利用标签名进行查询,经过尝试会获得有着大量属性的对象

image.png

还有可以利用class进行查询,给div添加一个class="world",于是可以使用下面语句

const text1 = document.querySelector(".world")
console.log(text1)

会获得与上面图片相同的结果。

querySelectorAll()

上面一种方法仅仅会选中第一个匹配的元素,而这种方法会匹配所有选中的元素,如下

image.png

在HTML文件中添加了一个<div>Hello, DOM!</div>,使用下面的语句查询

const text1 = document.querySelectorAll("div")
console.log(text1)

于是就能获得上面图片的结果。

创建DOM元素

每次都在 HTML 中手动创建 DOM 元素在工程量上去后会显得不够优雅,所以在 JS 中也有创建 DOM 元素的方法,createElement()appendChild()

所以我们可以使用下面的代码

const title = document.createElement("h1");
document.body.appendChild(title);

看一下效果

image.png

虽然是空白的页面,但是<h1>元素已经被创建成功了,我们接下来可以填充<h1>来获得内容

const title = document.createElement("h1");
title.textContent = "Hello, DOM!"
document.body.appendChild(title);

于是就能获得想要的结果了

改变DOM元素样式

在我们知道了如何获取 DOM 元素和如何创建DOM元素后,这个只需要知道基本的语法就行了。

比如修改上面创建的元素的颜色为红色,我们能直接使用title.style.color = "red",效果如下

image.png

比如想修改已有DOM元素的值,我们们需要先通过三种方法之一获取已有DOM元素,然后修改

const test = document.getElementById("test")
test.style.color = "blue"

效果如下

image.png

添加DOM事件

除了修改DOM元素的内容和样式外,还有很重要的一个是添加事件

比如我们想给一个按钮添加点击事件,那么我们可以先获取它,再用addEventListener()添加事件

代码如下

const button = document.getElementById("btn");
button.addEventListener("click", () => {
    alert("Hello, DOM!");
});

于是我们就给DOM元素按钮添加了事件

image.png

小结

因为本篇文章的重点在于原生JS对于DOM的操作,所以还并未涉及虚拟DOM的操作,在未来的文章中会进一步对虚拟DOM以及影子DOM做一些总结。

本篇文章虽然基础,但是也算是较为系统地梳理了我对DOM的理解,包括

  • DOM可理解为被JS操作的文本对象
  • 使用getElementById() querySelector() querySelectorAll()三种方法获取DOM元素
  • 使用createElement()appendChild()创建DOM元素,并放到HTML文件上
  • 使用.style修改DOM元素样式
  • 使用addEventListener()给DOM元素添加事件

参考文章1: www.freecodecamp.org/news/what-i…

参考文章2: www.codeguage.com/courses/js/…

玻璃钢生产厂家昆山五一商场美陈上海泡沫玻璃钢雕塑河南玻璃钢雕塑图片华北石材城玻璃钢雕塑贵州气球玻璃钢雕塑工艺品四川公园玻璃钢雕塑批发自贡玻璃钢雕塑定制户外庭院玻璃钢雕塑多样化的玻璃钢雕塑太空球玻璃钢雕塑枣强玻璃钢雕塑系高强度玻璃钢雕塑哪里卖泰州主题商场美陈晟凡玻璃钢雕塑园林玻璃钢雕塑制作铜陵美陈商场台州玻璃钢雕塑厂通用玻璃钢雕塑价格行情濮阳玻璃钢雕塑制作襄樊玻璃钢景观雕塑江门园林玻璃钢动物雕塑合肥玻璃钢雕塑哪家便宜南宁玻璃钢泡沫雕塑价格莱州玻璃钢雕塑厂重庆动物雕塑玻璃钢铜仁商场美陈景观江苏商场玻璃钢雕塑加工厂南京商场美陈玻璃钢卡通雕塑品牌安宁设计玻璃钢雕塑贵不贵个性化玻璃钢雕塑有哪些香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化