百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

JavaScript中什么是DOM?

myzbx 2024-12-07 15:16 15 浏览

云和安全管理服务专家新钛云服 林泓辉翻译


如果您刚刚开始学习 JavaScript,您可能听说过 DOM。但它究竟是什么?


在本文中,我将解释什么是 DOM 并提供一些 JavaScript 代码示例。


我们将看看如何从 HTML 文档中选择元素、如何创建元素、如何更改内联 CSS 样式以及如何监听事件。



什么是DOM?



DOM 代表文档对象模型。它是一个编程接口,允许我们从文档中创建、更改或删除元素。我们还可以向这些元素添加事件,使我们的页面更加动态。


DOM 将 HTML 文档视为节点树。一个节点代表一个 HTML 元素。


让我们看一下这段 HTML 代码,以更好地理解 DOM 树结构。

<!DOCTYPE html>

<html lang="en">

<head>

<metacharset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<title>DOM tree structure</title>

</head>

<body>

<h1>DOM tree structure</h1>

<h2>Learn about the DOM</h2>

</body>

</html>


我们的文档称为根节点,包含一个子节点,即<html>元素。该<html>元素包含两个子元素,它们是<head>和<body>元素。


the<head>和<body>element 都有自己的子元素。


这是可视化此节点树的另一种方法。


我们可以访问文档中的这些元素并使用 JavaScript 对其进行更改。


让我们看几个示例,说明我们如何使用 JavaScript 处理 DOM。



如何选择文档中的元素



在 HTML 文档中选择元素有几种不同的方法。

在本文中,我们将重点介绍其中三种方法:

? getElementById()

? querySelector()

? querySelectorAll()



getElementById():


在 HTML 中,id 用作 HTML 元素的唯一标识符。这意味着您不能为两个不同的元素使用相同的id名称。


这是不正确的:

<p id="para">This is my first paragraph.</p>

<p id="para">This is my second paragraph.</p>


您必须确保这些ids 是唯一的,如下所示:

<p id="para1">This is my first paragraph.</p>

<p id="para2">This is my second paragraph.</p>


在 JavaScript 中,我们可以通过引用id名称来获取 HTML 标签。

document.getElementById("id name goes here")


此代码告诉计算机使用id=para1获取元素<p>并将元素打印到控制台。

const paragraph1 = document.getElementById("para1");

console.log(paragraph1);


如果我们想知道刚才段落的内容,那么我们就可以使用textContent里面的属性console.log()。


const paragraph1 = document.getElementById("para1");

console.log(paragraph1.textContent);



querySelector():


您可以使用此方法查找具有一个或多个 CSS 选择器的元素。


我为我最喜欢的电视节目创建了这个 HTML 示例:

<h1>Favorite TV shows</h1>

<ul class="list">

<li>Golden Girls</li>

<li>Archer</li>

<li>Rick and Morty</li>

<li>The Crown</li>

</ul>


如果我想查找h1元素并将其打印到控制台,那么我可以在querySelector().

const h1Element = document.querySelector("h1");

console.log(h1Element);


如果我想class="list"将无序列表打印到控制台,那么我会.list在 querySelector().

在.之前list告诉计算机目标类的名称。如果您想定位一个,id那么您可以#在名称前使用一个符号。

const list = document.querySelector(".list");

console.log(list);




querySelectorAll():


此方法查找与 CSS 选择器匹配的所有元素并返回所有这些节点的列表。

如果我想<li>在我们的例子中找到所有的项目,我可以使用>子组合器来找到<ul>.

const listItems = document.querySelectorAll("ul > li");

console.log(listItems);


如果我们想打印出<li>电视节目的实际项目,我们可以使用 forEach()循环遍历 NodeList 并打印出每个项目。

const listItems = document.querySelectorAll("ul > li");

listItems.forEach((item) => {

console.log(item);

});



如何向文档添加新元素



我们可以使用document.createElement()向 DOM 树添加新元素。


让我们看一下这个例子:

<h1>Reasons why I love freeCodeCamp:</h1>


现在,我<h1>在页面上只有一个标签。但是我想在<h1>使用 JavaScript 的标签下添加一个我喜欢 freeCodeCamp 的原因列表。


我们可以首先使用document.createElement('ul'). 我将把它分配给一个名为unorderedList.

let unorderedList = document.createElement("ul");


然后我们需要使用该appendChild('ul')方法将该元素添加到文档中。

document.body.appendChild(unorderedList);


接下来为<ul>元素添加几个<li>元素。

let listItem1 = document.createElement("li");

let listItem2 = document.createElement("li");


然后我们可以使用该 textContent属性为我们的列表项添加文本。

let listItem1 = document.createElement("li");

listItem1.textContent = "It's free";

let listItem2 = document.createElement("li");

listItem2.textContent = "It's awesome";


最后一部分是使用该appendChild()方法将列表项添加到无序列表中。

let listItem1 = document.createElement("li");

listItem1.textContent = "It's free";

unorderedList.appendChild(listItem1);

let listItem2 = document.createElement("li");

listItem2.textContent = "It's awesome";

unorderedList.appendChild(listItem2);


这就是代码的样子。

let unorderedList = document.createElement("ul");

document.body.appendChild(unorderedList);

let listItem1 = document.createElement("li");

listItem1.textContent = "It's free";

unorderedList.appendChild(listItem1);

let listItem2 = document.createElement("li");

listItem2.textContent = "It's awesome";

unorderedList.appendChild(listItem2);


这是页面上的输出:



如何使用 Style 属性更改内联 CSS 样式



该style属性使您能够更改 HTML 文档中的 CSS。

在本例中,我们将h1使用style属性将文本从黑色更改为蓝色。

这是我们的 HTML。

<h1>I was changed to blue using JavaScript</h1>


我们首先需要使用querySelector('h1')方法获取标签。

const h1 = document.querySelector("h1");


然后我们使用h1.style.color将h1文本从黑色更改为蓝色。

const h1 = document.querySelector("h1");

h1.style.color = "blue";


这是在浏览器中的结果:



您可以使用此style属性来更改一些CSS内联样式,包括background-color,border-style,font-size和更多。



如何使用addEventListener() 监听页面上的事件



此方法允许您将事件附加到 HTML 元素(如按钮)。


在这个例子中,当用户点击按钮时,会弹出一条警告消息。


在我们的 HTML 中,我们有一个带有idof的按钮元素btn。

<button id="btn">Show alert</button>


我们可以使用getElementById()方法在 JavaScript 中定位该元素并将其分配给名为 的变量button。

const button = document.getElementById("btn");


addEventListener()的参数为事件类型和触发时的函数。事件类型将是一个click事件,该函数将触发警报消息。


这是将事件侦听器添加到button变量的代码。

button.addEventListener("click", () => {

alert("Thank you for clicking me");

});


这是您可以单击按钮并弹出警报消息的完整代码:

const button = document.getElementById("btn");

button.addEventListener("click", () => {

alert("Thank you for clicking me");

});




结论



DOM 代表文档对象模型,是一种编程接口,允许我们从文档中创建、更改或删除元素。我们还可以向这些元素添加事件,使我们的页面更加动态。


您可以使用getElementById(), querySelector()、 和等方法在 JavaScript 中选择元素querySelectorAll()。


如果要将新元素添加到文档中,可以使用document.createElement().

您还可以使用该style属性更改元素的内联 CSS 样式。


如果要将事件添加到按钮等元素,则可以使用addEventListener().

相关推荐

Luminati代理动态IP教程指南配置代理VMLogin中文版反指纹浏览器

介绍如何使用在VMLogin中文版设置Luminati代理。首先下载VMLogin中文版反指纹浏览器(https://cn.vmlogin.com)对于刚接触Luminati动态ip的朋友,是不是不懂...

文档中图形及子图形的处理(word中的图形对象有何特点)

【分享成果,随喜正能量】走得越远,见识越多,认识的人越多,你就越能体会到,人这一辈子,你真的在意的,同时又在意你的人,就那么几个,这几个人,就是你全部的世界。三两知己,爱人在侧,父母康健,听起来平淡无...

Python爬虫破解滑动验证码教程(python绕过滑动验证码)

破解滑动验证码通常需要结合图像识别和模拟人类操作,以下是分步骤的解决方案:1.分析验证码类型缺口识别型:背景图带缺口,滑块图带凸块轨迹验证型:除了位置还需模拟人类移动轨迹2.获取验证码图片方法一:...

「教程」5 分钟带你入门 kivy(新手kp教学)

原创:星安果AirPythonkivy语言通过编写界面UI,然后利用Python定义一些业务逻辑,可以移植很多功能模块到移动端直接执行。下面对kivy常见用法做一个汇总。1、什么是...

比呀比: Fossil Estate Canvas EW 男式复古邮差包 $70.99

Fossil是一个来自美国的全球性生活时尚品牌,始建于1984年,专注于时尚配件,是第一个将手表的价值与款式完美结合的美国品牌,如今Fossil已跃身成为美国最受欢迎的品牌之一。这款FossilE...

智能教学:如何在网上授课(网上授课怎么弄)

摘要:因为担心传统课堂可能会传播冠状病毒,许多大学已经开始在网上授课。耶鲁-新加坡国立大学的讲师凯瑟琳·谢伊·桑格(CatherineSheaSanger)解释了如何快速而有效地做到这一点。当新型冠...

wxPython库教程系列之图片:托盘图标和图片缩放、移动

1概要:=====1.1托盘图标设置1.2普通图片显示:原图显示,缩放显示,窗口与图片大小相互适应。1.3按钮图片设置1.4移动图片和zoom菜单按钮联动设置2托盘图标:========2...

UE4渲染目标开发教程(ue4渲染效果图质量怎么样)

渲染目标(RenderTarget)是你可以在运行时写入的纹理。在引擎方面,它们存储基础颜色、法线和环境光遮蔽等信息。在用户方面,渲染目标主要用作一种辅助相机。你可以将场景捕捉指向某物并将图像存储到...

比呀比: Fossil 化石 Canvas NS 男士复古帆布斜挎包 $57.59

FossilCanvasNS男士复古帆布斜挎包,尺寸约为26.5*11*33厘米。采用100%纯棉帆布面料,融合了休闲与百搭的外形,在经典的款型呈现复古质感。内设1个拉链袋,2个搭扣数码产品袋和...

比呀比: Timberland 添柏岚 Canvas Cord Case 帆布旅行手包 $5.99

Timberland添柏岚这款耐用帆布旅行手包,虽然一眼过去,觉得不咋地,但是品牌和质量还是妥妥滴,非常适合装一些零零碎碎的小东西,便于携带,多色可选,重点是价格更是感动价啊。目前这款包在6pm报价...

提炼文章/知识资料,两键转换成小红书图片

现在AI的功能已经越来越强大了,通过AI可以提高我们不少工作效率。刚好前几天做了一个几乎“一气呵成”,把长文章转成小红书卡片的流程Demo,分享给大家。之前发过两篇利用AI把长文章转成小红书图片...

python海龟绘图turtle(一):画布和窗体

海龟绘图(turtle)是python的一个有趣的内置模块,是python语言的标准库之一,是入门级的图形绘制函数库。海龟绘图(turtle)可以根据编写的控制指令(代码),让一个小“海龟”在屏幕上来...

在文档中添加画布及图片(word中如何添加画布)

【分享成果,随喜正能量】宁可正而不足,不可邪而有余。相识满天下,知心能几人。书七成,戏三分,牛皮灯影胡编成。布施不如还债,修福不如避祸。勿以恶小而为之,勿以善小而不为。。《VBA之Word应用》,是我...

知识管理神器 Obsidian,终于有了白板功能!

沙牛提示阅读本文需要3分钟,Obsidian白板功能来了!如果你喜欢本文,就分享给你的小伙伴!01白板继双链笔记之后,这一年,白板类工具开始火了起来。顾名思义,白板类工具,它给了你一张无限尺寸...

虚拟背景第一弹!教你如何在家中优雅地“学在交大”!

交大将于3月2日正式开始线上教学(3月1日举行线上教学第一课|视频直播课)目前正处于网课试课阶段交大在线课程教学以ZOOM、Canvas等作为主平台平台的虚拟背景功能可以具特别的环境效果更好地沉浸课堂...