常见的DOM元素与JavaScript的交互方式[示例]

DOM(Document Object Model)是一个编程接口,用于在浏览器中表示和操作 HTML 和 XML 文档。通过 DOM,开发人员可以使用 JavaScript 等编程语言来操纵网页上的各种元素,例如添加、删除、修改元素、响应用户事件等。

以下是一些常见的 DOM 元素与 JavaScript 的交互方式:

1. 获取 DOM 元素:可以使用 `document.getElementById()`、`document.querySelector()` 等方法获取特定的 DOM 元素。例如:

const header = document.getElementById('header');
const button = document.querySelector('.button');


1. 修改 DOM 元素:可以使用 `element.innerHTML`、`element.textContent` 等属性来修改 DOM 元素的内容。也可以使用 `element.setAttribute()` 方法来修改元素的属性。例如:

header.textContent = 'Hello, World!';
button.setAttribute('disabled', true);


1. 创建新的 DOM 元素:可以使用 `document.createElement()` 方法创建新的 DOM 元素,然后使用 `element.appendChild()` 方法将新元素添加到父元素中。例如:

const p = document.createElement('p');
p.textContent = 'This is a new paragraph.';
document.body.appendChild(p);


1. 事件处理:可以使用 `element.addEventListener()` 方法来为 DOM 元素添加事件监听器,从而在特定事件发生时执行特定的代码。例如:

button.addEventListener('click', () => {alert('Button clicked!');
});
<!DOCTYPE html>
<html>
<head><title>DOM Example</title>
</head>
<body><h1 id="header">Hello, World!</h1><button id="button">Click me</button><script>// 获取 DOM 元素const header = document.getElementById('header');const button = document.getElementById('button');// 修改 DOM 元素header.textContent = 'Hello, DOM!';// 创建新的 DOM 元素const p = document.createElement('p');p.textContent = 'This is a new paragraph.';document.body.appendChild(p);// 事件处理button.addEventListener('click', () => {alert('Button clicked!');});</script>
</body>
</html>


1. 遍历 DOM 元素:可以使用 `element.children`、`element.firstChild`、`element.lastChild` 等属性来遍历 DOM 元素,从而对其进行操作。例如:

const list = document.getElementById('list');
const listItems = list.children;for (let i = 0; i < listItems.length; i++) {listItems[i].style.color = 'red';
}

除了上面提到的方法和属性外,JavaScript 中还有许多其他的方法和属性可以用来操作 DOM 元素。以下是一些常见的方法和属性:

1. `element.classList`:用于操作 DOM 元素的 CSS 类。可以使用 `add()`、`remove()` 和 `toggle()` 等方法来添加、删除和切换 CSS 类。
2. `element.style`:用于操作 DOM 元素的内联样式。可以使用 `element.style.property` 的语法来设置或获取特定的 CSS 属性。
3. `element.getAttribute()` 和 `element.setAttribute()`:用于获取和设置 DOM 元素的属性。
4. `element.innerHTML`:用于获取或设置 DOM 元素的 HTML 内容。
5. `element.outerHTML`:用于获取或设置 DOM 元素的完整 HTML 代码。
6. `element.textContent`:用于获取或设置 DOM 元素的文本内容。

7. `element.offsetWidth` 和 `element.offsetHeight`:用于获取 DOM 元素的宽度和高度,包括边框和填充。
8. `element.clientWidth` 和 `element.clientHeight`:用于获取 DOM 元素的宽度和高度,不包括边框和滚动条,但包括填充。
9. `element.scrollWidth` 和 `element.scrollHeight`:用于获取 DOM 元素的宽度和高度,包括溢出部分。
10. `element.scrollTop` 和 `element.scrollLeft`:用于获取或设置 DOM 元素的滚动位置。
11. `element.parentElement`:用于获取 DOM 元素的父元素。
12. `element.children`:用于获取 DOM 元素的子元素。
13. `element.nextSibling` 和 `element.previousSibling`:用于获取 DOM 元素的下一个兄弟元素和上一个兄弟元素。

14. `element.insertAdjacentHTML()`:用于在 DOM 元素旁边插入新的 HTML 代码。
15. `element.querySelector()` 和 `element.querySelectorAll()`:用于在 DOM 元素中查找特定的子元素。

这些方法和属性只是 JavaScript 中操作 DOM 元素的一小部分,还有许多其他的方法和属性可以使用。
******************

以下是一些常见的在浏览器中操作DOM元素和执行JavaScript代码的任务:

1. **获取DOM元素:** 通过使用 `document.getElementById()`, `document.getElementsByClassName()`, `document.getElementsByTagName()` 或者 `document.querySelector()` 和 `document.querySelectorAll()` 方法获取DOM元素。

2. **修改元素内容:** 使用 `innerHTML` 或者 `textContent` 属性来修改DOM元素的内容。

3. **修改元素样式:** 使用 `style` 属性来修改DOM元素的CSS样式,例如 `element.style.color = 'red';`。

4. **添加和移除元素:** 使用 `appendChild()` 或者 `insertBefore()` 方法来添加新元素到DOM中,使用 `removeChild()` 方法来移除元素。

5. **事件处理:** 使用 `addEventListener()` 方法来添加事件监听器,例如 `element.addEventListener('click', handleClick);`,其中 `handleClick` 是一个处理事件的函数。

6. **处理表单数据:** 使用表单元素的 `value` 属性来获取用户输入的值,或者使用 `addEventListener()` 监听表单的提交事件。

7. **动画效果:** 使用CSS过渡或动画来创建动画效果,也可以使用JavaScript的定时器函数 `setInterval()` 或 `setTimeout()` 来实现动态效果。

8. **异步请求:** 使用 `XMLHttpRequest` 对象或者 `fetch()` API 来发送异步HTTP请求,并使用回调函数或Promise来处理响应。

9. **操作本地存储:** 使用 `localStorage` 或 `sessionStorage` API 来在浏览器中存储和检索数据。

10. **操作Cookie:** 使用 `document.cookie` 属性来读取和设置Cookie。

这些是前端开发中常见的操作,通过它们可以实现各种交互性和动态性的网页功能。
******************

这个示例中使用了多种 DOM 操作方法来操作网页上的各种元素。添加了一个 CSS 类,设置了内联样式,获取和设置了属性,获取和设置了 HTML 和文本内容,获取了元素的尺寸,滚动了元素,插入了新的 HTML 代码,删除了 DOM 元素,并处理了按钮的点击事件。 

<!DOCTYPE html>
<html>
<head><title>DOM Example</title><style>.highlight {background-color: yellow;}</style>
</head>
<body><h1 id="header">DOM Example</h1><p>This is a paragraph.</p><ul><li>Item 1</li><li>Item 2</li><li>Item 3</li></ul><button id="btn">Click me</button><script>// 获取 DOM 元素const header = document.getElementById('header');const firstParagraph = document.querySelector('p');const list = document.querySelector('ul');const button = document.getElementById('btn');// 添加 CSS 类header.classList.add('highlight');// 设置内联样式firstParagraph.style.color = 'red';// 获取和设置属性const listItems = list.getElementsByTagName('li');for (let i = 0; i < listItems.length; i++) {listItems[i].setAttribute('data-index', i);}console.log(listItems[0].getAttribute('data-index')); // 输出 0// 获取和设置 HTML 内容firstParagraph.innerHTML = 'This is a <strong>modified</strong> paragraph.';// 获取和设置文本内容const secondListItem = list.children[1];secondListItem.textContent = 'Modified item';// 获取元素的尺寸console.log(header.offsetWidth); // 输出元素的宽度console.log(header.offsetHeight); // 输出元素的高度// 滚动元素const scrollDiv = document.createElement('div');scrollDiv.style.width = '200px';scrollDiv.style.height = '100px';scrollDiv.style.overflow = 'auto';scrollDiv.innerHTML = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi.';document.body.appendChild(scrollDiv);scrollDiv.scrollTop = 50;// 插入新的 HTML 代码const newListItem = document.createElement('li');newListItem.textContent = 'New item';list.insertAdjacentHTML('beforeend', '<li>Another new item</li>');list.appendChild(newListItem);// 删除 DOM 元素const lastListItem = list.children[list.children.length - 1];lastListItem.remove();// 事件处理button.addEventListener('click', () => {header.textContent = 'Button clicked!';});</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head><title>FormHandling</title>
</head>
<body><form id="registrationForm"><label for="username">Username:</label><input type="text" id="username" name="username" required><br><label for="email">Email:</label><input type="email" id="email" name="email" required><br><label for="password">Password:</label><input type="password" id="password" name="password" required><br><button type="submit">Register</button></form><script>const form = document.getElementById('registrationForm');form.addEventListener('submit', event => {event.preventDefault();const username = document.getElementById('username').value;const email = document.getElementById('email').value;const password = document.getElementById('password').value;if (username.length < 3) {alert('Username must be at least 3 characters long.');return;}if (!email.includes('@')) {alert('Invalid email address.');return;}if (password.length < 6) {alert('Password must be at least 6 characters long.');return;}// 在这里处理表单数据console.log(`Username: ${username}, Email: ${email}, Password: ${password}`);});</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head><title>Cookie Example</title>
</head>
<body><h1>Cookie Example</h1><form id="cookieForm"><label for="name">Name:</label><input type="text" id="name" name="name"><br><label for="days">Days to expire:</label><input type="number" id="days" name="days" value="30"><br><button type="submit">Set Cookie</button></form><p id="cookieValue"></p><script>// 设置 Cookiefunction setCookie(name, value, days) {const expires = new Date(Date.now() + days * 24 * 60 * 60 * 1000).toUTCString();document.cookie = `${name}=${value}; expires=${expires}; path=/`;}// 获取 Cookiefunction getCookie(name) {const cookies = document.cookie.split(';');for (let i = 0; i < cookies.length; i++) {const cookie = cookies[i].trim().split('=');if (cookie[0] === name) {return cookie[1];}}return '';}// 删除 Cookiefunction deleteCookie(name) {document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/`;}// 提交表单设置 Cookieconst cookieForm = document.getElementById('cookieForm');cookieForm.addEventListener('submit', function(event) {event.preventDefault();const name = document.getElementById('name').value;const days = document.getElementById('days').value;setCookie('name', name, days);document.getElementById('cookieValue').textContent = `Cookie set: name=${name}`;});// 获取 Cookie 值const cookieValue = document.getElementById('cookieValue');const name = getCookie('name');if (name) {cookieValue.textContent = `Cookie value: name=${name}`;}</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head><title>localStorage Example</title>
</head>
<body><h1>localStorage Example</h1><form id="storageForm"><label for="name">Name:</label><input type="text" id="name" name="name"><br><button type="submit">Save to localStorage</button></form><p id="storageValue"></p><button id="clearStorage">Clear localStorage</button><script>// 保存到 localStoragefunction saveToLocalStorage(name) {localStorage.setItem('name', name);}// 从 localStorage 获取值function getFromLocalStorage(name) {return localStorage.getItem(name);}// 清除 localStoragefunction clearLocalStorage() {localStorage.clear();}// 提交表单保存到 localStorageconst storageForm = document.getElementById('storageForm');storageForm.addEventListener('submit', function(event) {event.preventDefault();const name = document.getElementById('name').value;saveToLocalStorage('name', name);document.getElementById('storageValue').textContent = `Saved to localStorage: name=${name}`;});// 从 localStorage 获取值const storageValue = document.getElementById('storageValue');const name = getFromLocalStorage('name');if (name) {storageValue.textContent = `localStorage value: name=${name}`;}// 清除 localStorageconst clearStorage = document.getElementById('clearStorage');clearStorage.addEventListener('click', function() {clearLocalStorage();document.getElementById('storageValue').textContent = 'localStorage cleared';});</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cookie 示例</title>
</head>
<body>
<h1>Cookie 示例</h1>
<button onclick="setCookie()">设置Cookie</button>
<button onclick="getCookie()">获取Cookie</button>
<p id="cookieValue"></p><script>
function setCookie() {document.cookie = "username=John Doe; expires=Thu, 18 Dec 2025 12:00:00 UTC; path=/";alert("Cookie 已设置");
}function getCookie() {const cookies = document.cookie.split(';');for (let i = 0; i < cookies.length; i++) {let cookie = cookies[i].trim();if (cookie.startsWith("username=")) {document.getElementById("cookieValue").innerText = cookie.substring("username=".length);return;}}document.getElementById("cookieValue").innerText = "未找到Cookie";
}
</script>
</body>
</html>

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

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

相关文章

【软件工程】测试规格

1. 引言 1.1简介 本次的测试用例是基于核心代码基本开发完毕&#xff0c;在第一代系统基本正常运行后编写的&#xff0c;主要目的是为了后续开发与维护的便利性。 该文档主要受众为该系统后续开发人员&#xff0c;并且在阅读此文档前最后先阅读本系统的需求文档、概要设计文…

谷歌推出多模态视频模型,自动生成丰富动作视频

谷歌的研究人员推出了一款多模态扩散模型——VLOGGER。 用户只需要向VLOGGER输入图像、语音&#xff0c;就能生成带语音、丰富动作的人物视频。VLOGGER基于扩散模型开发而成&#xff0c;并提出了一种全新的架构&#xff0c;将文本生成图像模型与空间、时间控制相结合&#xff…

使用Python转换图片中的颜色

说明&#xff1a;最近在看梵高的画册&#xff0c;我手上的这本画册&#xff08;《文森特梵高》杨建飞 主编&#xff09;书中说&#xff0c;梵高用的颜料里有不耐久的合成颜料&#xff0c;原本的紫色褪成了我们现在所看到的灰蓝色。于是我想&#xff0c;能不能用程序将画中的颜色…

【Rust】基础语法

变量&#xff0c;基本类型&#xff0c;函数&#xff0c;注释和控制流&#xff0c;这些几乎是每种编程语言都具有的编程概念。 这些基础概念将存在于每个 Rust 程序中&#xff0c;及早学习它们将使你以最快的速度学习 Rust 的使用。 变量 首先必须说明&#xff0c;Rust 是强类…

单链表的排序

目录 题目来源&#xff1a; 题目描述&#xff1a; 初始代码&#xff1a; 思路&#xff1a; 具体做法&#xff1a; 我的代码&#xff1a; 优化代码&#xff1a; 对比&#xff1a; 复习&#xff1a;List 基本介绍 常用方法 遍历方式 题目来源&#xff1a; 单链表的排…

MySQL常见锁探究

MySQL常见锁探究 1. 各种锁类型1.1 全局锁1.2 表级锁1.2.1 表锁1.2.2 元数据锁&#xff08;MDL&#xff09;1.2.3 意向锁1.2.4 AUTO-INC 锁 1.3 行级锁1.3.1 Record Lock1.3.2 Gap Lock1.3.3 Next-Key Lock 2. MySQL是如何加锁的&#xff1f;2.1 什么 SQL 语句会加行级锁&#…

WPF —— 关键帧动画

wpf动画类型 1<类型>Animation这些动画称为from/to/by动画或者叫基本动画&#xff0c;他们会在起始值或者结束值进行动画处理&#xff0c;常用的例如 <DoubleAnimation> 2 <类型>AnimationUsingKeyFrames: 关键帧动画&#xff0c;功能要比from/to这些动画功…

Win10 下 Vision Mamba(Vim-main)的环境配置(libcuda.so文件无法找到,windows系统运行失败)

目录 1、下载NVIDIA 驱动程序、cuda11.8、cudnn8.6.0 2、在Anaconda中创建环境并激活 3、下载gpu版本的torch 4、配置环境所需要的包 5、安装causal_conv1d和mamba-1p1p1 安装causal_conv1d 安装mamba-1p1p1 6、运行main.py失败 请直接拉到最后查看运行失败的原因&am…

python图书自动折扣系统

在Python中创建一个图书自动折扣系统可以帮助书店或在线商城自动化地管理图书销售的折扣过程。这样的系统可以根据图书的销量、存货或者促销活动来动态调整折扣率。 图书自动折扣系统概述 图书自动折扣系统的目的是根据预设的规则自动计算图书的折扣。例如&#xff0c;我们可…

Pandas:sort_index、sort_values方法的使用

sort_index和sort_values既是Series类型数据自带的方法&#xff0c;也是DataFrame数据自带的方法。本篇博客以DataFrame为例进行讲述。 1 概览 sort_index和sort_values可以将DataFrame中的数据按照索引及值的大小进行排序。这两个方法所包含的参数及其作用都基本一致。如下表…

重读Java设计模式: 桥接模式详解

引言 在软件开发中&#xff0c;经常会遇到需要在抽象与实现之间建立连接的情况。当系统需要支持多个维度的变化时&#xff0c;使用传统的继承方式往往会导致类爆炸和耦合度增加的问题。为了解决这一问题&#xff0c;我们可以使用桥接模式。桥接模式是一种结构型设计模式&#…

【windows】--- nginx 超详细安装并配置教程

目录 一、下载 nginx二、安装三、查看是否安装成功四、配置五、关闭 nginx六 负载均衡七 配置静态资源1. 根目录下的子目录(root)2.完全匹配(alias) 刷新配置&#xff08;不必重启nginx&#xff09;八、后端鉴权 一、下载 nginx 打开 nginx 的官网&#xff1a;nginx.org/ &…

2024.4.3-[作业记录]-day08-CSS 盒子模型(溢出显示、伪元素)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业 2024.4.3-学习笔记css溢出显示单行文本溢出显示省略号多行文本溢出显示省…

Linux基础篇:Linux网络yum源——以配置阿里云yum源为例

Linux网络yum源——以阿里云为例 一、网络yum源介绍 Linux中的YUM&#xff08;Yellowdog Updater, Modified&#xff09;源是一个软件包管理器&#xff0c;它可以自动处理依赖关系并安装、更新、卸载软件包。YUM源是一个包含软件包的远程仓库&#xff0c;它可以让用户轻松地安…

苹果cmsV10 MXProV4.5自适应PC手机影视站主题模板苹果cms模板mxone pro

演示站&#xff1a;http://a.88531.cn:8016 MXPro 模板主题(又名&#xff1a;mxonepro)是一款基于苹果 cms程序的一款全新的简洁好看 UI 的影视站模板类似于西瓜视频&#xff0c;不过同对比 MxoneV10 魔改模板来说功能没有那么多,也没有那么大气&#xff0c;但是比较且可视化功…

【 C++对C语言的拓展 】 引用

引用 1.1 变量名 变量名实质上是一段连续存储空间的别名&#xff0c;是一个标号(门牌号) 通过变量来申请并命名内存空间. 通过变量的名字可以使用存储空间. 问题&#xff1a;对一段连续的内存空间只能取一个别名吗&#xff1f; 1.2 引用的概念 变量名&#xff0c;本身…

centos7 FastDFS一键自动安装脚本

FastDFS 一键自动安装脚本 目录 FastDFS 一键自动安装脚本1. 简介2. 脚本功能3. 使用说明准备工作执行脚本 4. 注意事项5.下载6.代码解释 1. 简介 该脚本是一个用于在离线环境下一键自动安装 FastDFS 的 Bash 脚本。它包含了安装 FastDFS 的所有步骤&#xff0c;包括安装依赖、…

服务器硬件构成与性能要点:CPU、内存、硬盘、RAID、网络接口卡等关键组件的基础知识总结

文章目录 服务器硬件基础知识CPU&#xff08;中央处理器&#xff09;内存&#xff08;RAM&#xff09;硬盘RAID&#xff08;磁盘阵列&#xff09;网络接口卡&#xff08;NIC&#xff09;电源散热器主板显卡光驱 服务器硬件基础知识 服务器是一种高性能计算机&#xff0c;用于在…

thinkphp6入门(21)-- 如何删除图片、文件

假设文件的位置在 /*** 删除文件* $file_name avatar/20240208/d71d108bc1086b498df5191f9f925db3.jpg*/ function deleteFile($file_name) {// 要删除的文件路径$file app()->getRootPath() . public/uploads/ . $file_name; $result [];if (is_file($file)) {if (unlin…

论文笔记:Large Language Models as Analogical Reasoners

iclr 2024 reviewer打分5558 1 intro 基于CoT prompt的大模型能够更好地解决复杂推理问题 然而传统CoT需要提供相关的例子作为指导&#xff0c;这就增加了人工标注的成本——>Zero-shot CoT避免了人工标注来引导推理 但是对于一些复杂的任务难以完成推理&#xff0c;例如c…