【Java 进阶篇】JavaScript DOM Document对象详解

news2025/7/13 8:49:26

在这里插入图片描述

在前端开发中,DOM(文档对象模型)扮演着重要的角色。它允许我们使用JavaScript来与网页文档进行交互,实现动态的网页效果。DOM的核心部分之一就是Document对象,它代表了整个HTML文档。在本篇博客中,我们将深入探讨Document对象,包括它的属性、方法以及如何使用它来操纵网页内容。

什么是Document对象

Document对象是DOM的根节点,代表整个HTML文档。通过Document对象,您可以访问和操纵HTML文档的各个部分,包括元素、属性、文本内容等。以下是一些Document对象的常见属性和方法:

  • document.getElementById(id): 通过元素的id属性获取元素。
  • document.getElementsByTagName(tagName): 通过标签名获取元素的集合。
  • document.createElement(tagName): 创建一个新的HTML元素。
  • document.querySelector(selector): 通过CSS选择器获取元素。
  • document.write(text): 将文本写入文档。
  • document.body: 获取文档的<body>元素。
  • document.title: 获取或设置文档的标题。

接下来,我们将逐一介绍这些属性和方法,并提供相应的案例以帮助理解。

获取元素

通过Document对象,我们可以使用不同的方法获取HTML文档中的元素。这些方法基于元素的id、标签名、类名、CSS选择器等,以下是一些常见的获取元素的方法:

通过id获取元素

使用getElementById方法可以通过元素的id属性获取元素。这是一种常见的操作,通常用于获取具体的DOM元素并进行操作。

<!DOCTYPE html>
<html>
<head>
    <title>Get Element by ID Example</title>
</head>
<body>
    <div id="myDiv">This is a div element.</div>
    <script>
        // 获取id为"myDiv"的元素
        var divElement = document.getElementById("myDiv");
        divElement.innerHTML = "Element with id 'myDiv' has been updated!";
    </script>
</body>
</html>

在上述示例中,我们首先在HTML中创建一个<div>元素,并为其设置了id属性为"myDiv"。然后,通过JavaScript的getElementById方法,我们获取了这个元素,并使用innerHTML属性来更新其内容。

通过标签名获取元素

使用getElementsByTagName方法可以获取特定标签名的元素集合。这对于获取文档中所有相同标签名的元素非常有用。

<!DOCTYPE html>
<html>
<head>
    <title>Get Elements by TagName Example</title>
</head>
<body>
    <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
    </ul>
    <script>
        // 获取所有<li>元素
        var listItems = document.getElementsByTagName("li");
        for (var i = 0; i < listItems.length; i++) {
            listItems[i].style.color = "blue";
        }
    </script>
</body>
</html>

在上述示例中,我们使用getElementsByTagName方法获取了所有<li>元素,并通过循环遍历这些元素来将它们的文本颜色设置为蓝色。

通过CSS选择器获取元素

使用querySelector方法可以通过CSS选择器获取元素。这允许您更灵活地选择特定元素,而不仅仅是根据id或标签名。

<!DOCTYPE html>
<html>
<head>
    <title>Get Element by CSS Selector Example</title>
    <style>
        .highlighted {
            background-color: yellow;
        }
    </style>
</head>
<body>
    <p class="highlighted">This paragraph is highlighted.</p>
    <p>This paragraph is not highlighted.</p>
    <script>
        // 获取具有"highlighted"类的<p>元素
        var highlightedElement = document.querySelector(".highlighted");
        highlightedElement.style.fontWeight = "bold";
    </script>
</body>
</html>

在上述示例中,我们首先定义了两个<p>元素,其中一个具有class为"highlighted",另一个没有。然后,通过querySelector方法选择具有"highlighted"类的元素,并将其font-weight属性设置为"bold",从而使文本加粗显示。

这些方法让您能够根据不同的需求选择文档中的元素,然后对它们进行各种操作,例如修改样式、添加事件监听器等。

创建新元素

通过Document对象,您可以创建新的HTML元素,然后将它们添加到文档中。使用createElement方法可以创建一个新的元素。

<!DOCTYPE html>
<html>
<head>
    <title>Create Element Example</title>
</head>
<body>
    <div id="container">
        <!-- 新元素将会被添加到这里 -->
    </div>
    <script>
        // 创建一个新的<p>元素
        var newParagraph = document.createElement("p");
        newParagraph.innerHTML = "This is a new paragraph element.";
        
        // 获取容器元素并将新元素添加进去
        var container = document.getElementById("container");
        container.appendChild(newParagraph);
    </script>
</body>
</html>

在上述示例中,我们首先在HTML中创建了一个空的<div>元素,并为其设置了id属性为"container",表示新元素将会被添加到这个容器中。接着,通过JavaScript的createElement方法,我们创建了一个新的<p>元素,并使用innerHTML属性来设置它的内容。最后,我们通过appendChild方法将新元素添加到容器中。

这个过程可以动态地向文档中添加内容,非常适用于需要根据用户操作动态生成元素的情况,比如添加新的列表项或评论。

写入文本

Document对象还提供了一个方便的方法write,用于将文本写入文档。这对于动态生成内容或调试JavaScript非常有用。

<!DOCTYPE html>
<html>
<head>
    <title>Write Text Example</title>
</head>
<body>
    <script>
        // 写入文本
        document.write("Hello, World!");
    </script>
</body>
</html>

在上述示例中,我们使用document.write方法将文本"Hello, World!"写入文档中。这可以在页面加载时或在JavaScript代码中使用,以将内容动态添加到文档中。

需要注意的是,document.write方法会替换整个文档内容,因此要慎用,以免破坏页面的结构。

获取文档标题

Document对象的title属性用于获取或设置文档的标题。

<!DOCTYPE html>
<html>
<head>
    <title>Document Title Example</title>
</head>
<body>
    <script>
        // 获取文档标题
        var title = document.title;
        alert("Document title: " + title);
        
        // 设置新的文档标题
        document.title = "New Document Title";
    </script>
</body>
</html>

在上述示例中,我们首先使用document.title来获取文档的标题,并使用alert方法显示出来。接着,我们通过document.title来设置新的文档标题。这对于在不刷新页面的情况下更改文档标题非常有用,比如在单页应用程序中。

DOM事件

Document对象也可以用于处理DOM事件。事件是与HTML元素相关的用户行为,例如单击、鼠标悬停、键盘输入等。JavaScript允许您捕获这些事件并执行相应的操作。以下是一些常见的DOM事件:

  • click: 当元素被单击时触发。
  • mouseover: 鼠标悬停在元素上时触发。
  • keydown: 键盘按键被按下时触发。
  • submit: 表单被提交时触发。
  • load: 页面和所有资源加载完毕时触发。

让我们看一个示例,演示如何使用Document对象来处理DOM事件:

<!DOCTYPE html>
<html>
<head>
    <title>DOM Event Example</title>
</head>
<body>
    <button id="myButton">Click Me</button>
    <script>
        // 获取按钮元素
        var button = document.getElementById("myButton");

        // 添加点击事件处理程序
        button.addEventListener("click", function() {
            alert("Button clicked!");
        });
    </script>
</body>
</html>

在上述示例中,我们首先获取了一个按钮元素,其id为"myButton"。然后,我们使用addEventListener方法来添加一个点击事件处理程序,当按钮被点击时,将触发alert弹窗。

这样的事件处理程序允许您在用户与网页进行交互时执行特定的JavaScript代码,从而实现各种互动和反馈。

DOM样式

Document对象还允许您访问和修改元素的样式。这是通过style属性实现的,该属性包含了元素的CSS样式属性。

<!DOCTYPE html>
<html>
<head>
    <title>DOM Style Example</title>
    <style>
        #myDiv {
            width: 200px;
            height: 100px;
            background-color: lightblue;
        }
    </style>
</head>
<body>
    <div id="myDiv">This is a div element.</div>
    <script>
        // 获取div元素
        var divElement = document.getElementById("myDiv");

        // 修改样式
        divElement.style.backgroundColor = "lightcoral";
        divElement.style.color = "white";
        divElement.style.fontSize = "16px";
    </script>
</body>
</html>

在上述示例中,我们首先定义了一个<div>元素,其id为"myDiv",并为其添加了一些CSS样式。然后,通过getElementById方法获取了这个元素,使用style属性修改了其背景颜色、文本颜色和字体大小。这使您能够通过JavaScript动态更改元素的外观。

这只是Document对象的一小部分功能,但它足以展示出它的强大之处。使用这些方法和属性,您可以在网页上进行各种交互和操作。

总结

Document对象是DOM的核心,代表整个HTML文档。通过Document对象,您可以获取元素、创建新元素、写入文本、处理事件以及修改元素的样式。这些功能使JavaScript能够与网页内容互动,实现动态和交互性的网页。无论是更改文本内容、更新样式、添加交互事件,还是创建新的元素,Document对象都是前端开发不可或缺的工具之一。

希望这篇博客对初学者有所帮助,使他们更好地理解Document对象及其用途。如果您想深入学习,建议查阅相关文档和继续探索更多关于DOM和JavaScript的内容。祝您在前端开发的道路上取得成功!

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1103071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

A1S65B-S1 A1S61PN A1SJ51T64 机器人的优点和缺点

A1S65B-S1 A1S61PN A1SJ51T64 机器人的优点和缺点 像今天的任何创新一样&#xff0c;机器人有其优缺点。以下是机器人的优缺点和机器人未来的分析。 优势 他们在危险的环境中工作:当你可以派一个机器人去做这项工作时&#xff0c;为什么要拿人命冒险呢&#xff1f;想想看&a…

电平转换器IC

一、前言 使用多款电平转换器&#xff0c;记录和分享使用心得 目录 1.TXB0104(非国产) 2.RS0104(国产) 二、环境 非隔离电平转换&#xff0c;1.8~5V 三、正文 1.TXB0104(非国产) 芯片简介&#xff1a;A 端口支持 1.2V 至 3.6V 的电压&#xff0c;B 端口支持 1.65V 至 5…

法国数字医疗公司Tilak Healthcare完成1000万欧元融资

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于法国巴黎的治疗眼科的数字医疗公司Tilak Healthcare今日宣布已完成1000万欧元融资。 本轮融资完成后&#xff0c;Tilak Healthcare的融资总额已达到2200万欧元&#xff0c;本轮融资由Elai…

【软件测试】高频常问自动化测试面试题+答案(汇总)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、你有没有做过自…

linux文件权限与目录配置

用户与用户组 linux一般将文件可读写的身份分为三个类别&#xff1a;拥有者&#xff08;owner&#xff09;、所属群组&#xff08;group&#xff09;、其他人&#xff08;other&#xff09; 三种身份都有读、写、执行等权限 文件拥有者 linux是个多人多任务的系统&#xff0c…

Edge侧实用【AI插件合集】

废话不多说&#xff0c;直接开始正文&#x1f447; 1.ChatsNow ChatsNow是人工智能助手&#xff0c;支持GPT-3.5 和 GPT-4 模型&#xff0c;写作&#xff0c;AI绘画统统不在话下&#xff0c;并且可以增强搜索引擎结果等。 免费使用&#xff0c;提供30次问答次数&#xff0c;…

智慧公厕:打造清新无臭的舒适空间

近年来&#xff0c;智慧公厕成为城市建设中备受关注的一个热点话题。而对于公共厕所最让人头痛的臭味问题&#xff0c;一直困扰着管理单位。为了解决公厕臭味问题&#xff0c;科技力量发挥了重要作用&#xff0c;中期科技「智慧公厕-智慧厕所」推出了一系列公厕除臭设备&#x…

JDBC整合C3P0,DBCP,DRUID数据库连接池

在使用JDBC整合数据库连接操作时,如果需要用到事务,在去关闭Connection conn的时候 注意在关闭前 注意:最好这么做一下 避免下次别人用的时候也自动开启事务,但是自己测试C3P0时候,连接池会自动将状态更新,也就是说,即使关闭前不设置为true,默认连接池也会将状态更新, 这里…

基于饥饿游戏优化的BP神经网络(分类应用) - 附代码

基于饥饿游戏优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于饥饿游戏优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.饥饿游戏优化BP神经网络3.1 BP神经网络参数设置3.2 饥饿游戏算法应用 4.测试结果…

win10系统防火墙 拦截未知程序,怎么在防火墙上放行?

如果您想让防火墙不拦截某些程序&#xff0c;可以按照以下步骤进行操作&#xff1a; 打开控制面板&#xff0c;选择系统和安全&#xff0c;点击Windows Defender防火墙&#xff1a;“Windows Defender防火墙”&#xff0c;打开防火墙设置。 点击“允许应用或功能通过“Windows…

【Java学习之道】数据库的基本概念与分类

引言 在这一章中&#xff0c;我们将一起探讨数据库编程的基础知识和核心技能。作为Java程序员&#xff0c;掌握数据库编程是非常重要的&#xff0c;因为在实际开发过程中&#xff0c;我们经常需要处理大量的数据。通过本章节的学习&#xff0c;你将能够理解数据库的基本概念、…

【LeetCode热题100】--287.寻找重复数

287.寻找重复数 方法&#xff1a;使用快慢指针 使用环形链表II的方法解题&#xff08;142.环形链表II&#xff09;&#xff0c;使用 142 题的思想来解决此题的关键是要理解如何将输入的数组看作为链表。 首先明确前提&#xff0c;整数的数组 nums 中的数字范围是 [1,n]。考虑一…

如何创建响应式前端表单?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

element ui 下拉框 选择月份和天数

一、背景 目前做的管理系统项目&#xff0c;期望实现功能为&#xff1a;设置出账周期和出账日&#xff0c;考虑使用element ui下拉框实现功能 二、所用技术 vue2element ui 三、实现效果 四、具体代码 <template><popup-frame :title"批量设置出账日" …

【Java基础面试十八】、说一说重写与重载的区别

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;说一说重写与重载的区别…

quartz中jdbc.initialize-schema

never&#xff1a;从不进行初始化&#xff0c;也就是不清空数据库 always&#xff1a;每次都清空数据库进行初始化 embedded&#xff1a;只初始化内存数据库&#xff08;默认值&#xff09;

Fluent瞬态结果的时间统计处理

声明&#xff1a;本文基于 2023R2 版&#xff0c;在其他版本中界面操作、可设置内容等可能存在区别。 1 背景 仿真中有时需要对区域上每个位置的结果数据进行统计分析&#xff0c;例如需要统计设备表面的压力脉动情况&#xff0c;并找出压力脉动最大的位置。在Fluent中对结果…

氮气柜和电子防潮柜物品存储湿度范围介绍

氮气柜和电子防潮柜是常见的两种用于存储特定物品的设备&#xff0c;它们的湿度控制范围和存放物品略有不同。 氮气柜 全范围湿度&#xff1a;1%-60%RH&#xff0c;全自动氮气控制&#xff0c;按需设置1-60%湿度范围。采用微电脑自动感应控制&#xff0c;结合氮气瓶或制氮机使用…

WPS、Excel表格增加一列,序列1到任意大小 / 填充某个范围的数字到列

Excel添加一列递增的数字方法有如下&#xff1a; 一、最常用的&#xff0c;使用鼠标放到右下角下拉增加 1、选中起始框的右下角&#xff0c;直到显示黑色实心十字 2、一直向下拖动 3、成功 这种填充方式是最常用的&#xff0c;100以内都可以轻松瞬间完成 1~100填充 但是如果…

Vue3 实现文件预览 Word Excel pdf 图片 视频等格式 大全!!!!

先上效果图 插件安装 先说 word 文件是docx-preview插件 excel文件是用 xlsx 插件 介绍后端返回的数据 因为在拦截器处 做了对数据的处理 最后你调接口拿到的数据是 一个对象 里面包含: url : blob对象转换的用于访问Blob数据的临时链接。这个链接可以被用于在网页中展示…