JavaScript 改变 HTML 内容

JavaScript 改变 HTML 内容

JavaScript 改变 HTML 内容的核心在于通过 DOM(文档对象模型)操作实现动态更新,以下是主要方法及场景解析:


一、直接修改元素内容

1. innerHTML 属性

用于获取或设置元素的 HTML 内容(包括标签),适合动态插入富文本。

document.getElementById("demo").innerHTML = "<strong>新内容</strong>";
  • 场景:需要插入 HTML 标签或结构时(如动态生成列表项)。
  • 注意:可能引发 XSS 攻击,需对用户输入内容做转义处理。

2. textContentinnerText

  • textContent:修改纯文本内容,保留换行和空格,但不解析 HTML 标签。
    element.textContent = "纯文本内容";
    
  • innerText:类似 textContent,但会忽略隐藏元素(如 display: none)。

二、动态创建与插入元素

1. DOM 节点操作

通过 createElementappendChild 动态生成内容:

const newDiv = document.createElement("div");
newDiv.textContent = "新增内容";
document.body.appendChild(newDiv);
  • 优势:避免 innerHTML 的安全风险,适合复杂结构插入。

2. insertAdjacentHTML 方法

在指定位置插入 HTML 字符串,支持灵活的位置控制(如 beforeend 表示元素末尾):

element.insertAdjacentHTML("beforeend", "<p>插入内容</p>");
  • 场景:需要快速插入 HTML 片段且不破坏现有 DOM 结构。

三、修改元素属性与样式

1. 属性修改

通过 setAttribute 或直接赋值修改元素属性(如 srchref):

document.getElementById("myImg").src = "new-image.jpg";
// 或 
element.setAttribute("class", "active");
  • 典型应用:动态切换图片、链接或类名。

2. 样式调整

直接操作元素的 style 属性:

element.style.color = "red";
element.style.fontSize = "20px";
  • 扩展:通过 classList 添加/移除 CSS 类实现批量样式更新。

四、事件驱动的动态更新

结合事件监听器实现交互式内容变化:

<button onclick="updateContent()">点击更新</button>
<script>function updateContent() {document.getElementById("text").innerHTML = "内容已更新!";}
</script>
  • 优化:推荐使用 addEventListener 替代内联事件绑定,提高代码可维护性。

五、注意事项与最佳实践

1. 性能优化

  • 避免频繁操作 DOM(如循环中多次修改),可先构建内容片段再一次性插入。
  • 使用事件委托减少监听器数量(如通过父元素管理子元素事件)。

2. 安全性

  • 避免直接用 innerHTML 插入未经验证的用户输入,防止 XSS 攻击。

3. 兼容性

  • innerTexttextContent 的浏览器支持差异需注意(如旧版 Firefox 不支持 innerText)。

总结

JavaScript 提供了多种灵活的方式改变 HTML 内容:

  • 简单文本更新:优先用 textContent
  • 富文本插入:谨慎使用 innerHTMLinsertAdjacentHTML
  • 动态结构生成:推荐 DOM 节点操作。
  • 交互式场景:结合事件监听实现实时更新。

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

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

相关文章

Jenkins最新版,配置Gitee私人令牌和Gitee凭证

jenkins 配置Gitee私人令牌和凭证 jenkins 版本&#xff1a;Jenkins 2.492.2 Gitee配置 Jenkins配置gitee插件&#xff0c;需要先申请gitee私钥。 安装gitee插件 申请Gitee私人令牌&#xff0c;后面还需要添加凭证。 测试链接&#xff0c;并保存 配置凭证

ORACLE RAC ASM双存储架构下存储部分LUN异常的处理

早上接到用户电话&#xff0c;出现有表空间不足的告警&#xff0c;事实上此环境经常巡检并且有告警系统&#xff0c;一开始就带着有所疑惑的心理&#xff0c;结果同事在扩大表空间时&#xff0c;遇到报错 ORA-15401/ORA-17505,提示ASM空间满了&#xff1a; ALERT日志&#xff1…

Windows下docker使用教程

docker安装 镜像制作镜像加载容器创建更新镜像导出镜像 Windows10安装dockerdocker image制作docker 镜像加载docker 容器创建更新imageimage 导出为.tar文件 #以Windows10 、11为例 linux和Windows区别在于docker安装的程序是哪个操作系统的&#xff0c;后面的内容其实不变 …

9.4分漏洞!Next.js Middleware鉴权绕过漏洞安全风险通告

今日&#xff0c;亚信安全CERT监控到安全社区研究人员发布安全通告&#xff0c;Next.js 存在一个授权绕过漏洞&#xff0c;编号为 CVE-2025-29927。攻击者可能通过发送精心构造的 x-middleware-subrequest 请求头绕过中间件安全控制&#xff0c;从而在未授权的情况下访问受保护…

代码随想录算法训练营Day12 | Leetcode 226翻转二叉树、101对称二叉树、104二叉树的最大深度、111二叉树的最小深度

代码随想录算法训练营Day12 | Leetcode 226翻转二叉树、101对称二叉树、104二叉树的最大深度、111二叉树的最小深度 一、翻转二叉树 相关题目&#xff1a;Leetcode226 文档讲解&#xff1a;Leetcode226 视频讲解&#xff1a;Leetcode226 1. Leetcode226.翻转二叉树 给你一棵二…

3.26学习总结 做题

先初始化n1时&#xff0c;输出的图案。 观察可以得到&#xff0c;n每加1&#xff0c;则在原先图案的左下方和右下方重新打印一遍原先的图案&#xff0c;可以分为两步。 1.复制原先图案打印在其正下方和右下方&#xff0c;并将原先图案清空。 2.在现在图案的上方中间打印原先…

Linux学习笔记(应用篇二)

基于I.MX6ULL.MINI开发板 开发板与电脑相互通信电脑与开发板互传文件 开发板与电脑相互通信 用网线将电脑与开发板连接 本人使用的是Ubuntu系统&#xff0c;不是虚拟机 一般来说刚开始电脑和开发板是ping不通的 首先查看电脑的 IP WinR&#xff0c;cmd调出终端 我使用的是…

【gradio】从零搭建知识库问答系统-Gradio+Ollama+Qwen2.5实现全流程

从零搭建大模型问答系统-GradioOllamaQwen2.5实现全流程&#xff08;一&#xff09; 前言一、界面设计&#xff08;计划&#xff09;二、模块设计1.登录模块2.注册模块3. 主界面模块4. 历史记录模块 三、相应的接口&#xff08;前后端交互&#xff09;四、实现前端界面的设计co…

中间件漏洞-Tomcat篇

一&#xff1a;CVE-2017-12615 1.搭建服务 cd /www/wwwroot/vulhub-master/tomcat/CVE-2017-12615 docker-compose up -d 2.打开网页 3.在哥斯拉中生成jsp木马并保存为2.jpg 对当前页面进行抓包&#xff0c;修改提交方式为PUT并复制木马 4.在网页中访问我们生成的木马&#…

PHP eval 长度限制绕过与 Webshell 获取

在 PHP 代码中&#xff0c;如果 eval($param); 存在且长度受限&#xff0c;并且过滤了 eval 和 assert&#xff0c;仍然可以通过多种方法绕过限制&#xff0c;获取 Webshell。 源码 <?php $param $_REQUEST[param]; if(strlen($param)<17 && stripos($param,…

31天Python入门——第15天:日志记录

你好&#xff0c;我是安然无虞。 文章目录 日志记录python的日志记录模块创建日志处理程序并配置输出格式将日志内容输出到控制台将日志写入到文件 logging更简单的一种使用方式 日志记录 日志记录是一种重要的应用程序开发和维护技术, 它用于记录应用程序运行时的关键信息和…

特殊行车记录仪DAT视频丢失的恢复方法

行车记录仪是一种常见的车载记录仪&#xff0c;和常见的“小巧玲珑”的行车记录仪不同&#xff0c;一些特种车辆使用的记录仪的外观可以用“笨重”来形容。下边我们来看看特种车载行车记录仪删除文件后的恢复方法。 故障存储: 120GB存储设备/文件系统:exFAT /簇大小:128KB 故…

机器学习——KNN数据均一化

在KNN&#xff08;K-近邻&#xff09;算法中&#xff0c;数据均一化&#xff08;归一化&#xff09;是预处理的关键步骤&#xff0c;用于消除不同特征量纲差异对距离计算的影响。以下是两种常用的归一化操作及其核心要点&#xff1a; 质押 一 、主要思想 1. 最值归一化&#…

Element UI实现表格全选、半选

制作如图所示的表格全选、半选&#xff1a; 父组件 <template><div id"app"><SelectHost :hostArray"hostArray" /></div> </template><script> import SelectHost from ./components/SelectHost.vue export default…

深度学习入门1 基于Python的理论与实现

torch.unsqueeze()将一维数据变为二维数据&#xff0c;torch只能处理二维数据 tensor不能反向&#xff0c;variable可以反向。variable.data.numpy()转换为numpy 第3章 神经网络 实现softmax函数时的注意事项&#xff1a;为防止e的指数运算造成溢出 矩阵的第 0 维是列方向,第…

vue响应式原理剖析

一、什么是响应式? 我们先来看一下响应式意味着什么?我们来看一段代码: m有一个初始化的值,有一段代码使用了这个值; 那么在m有一个新的值时,这段代码可以自动重新执行; let m = 20 console.log(m) console.log(m * 2)m = 40上面的这样一种可以自动响应数据变量的代码机…

UDP数据报套接字编程

1.DatagramSocket API Socket是操作系统中的一个概念 本质上是一种特殊的文件 Socket就属于是把"网卡"这个设备,抽象成文件了 往Socket文件中写数据,就相当于通过网卡发送数据 从Socket文件读数据,就相当于通过网卡接受数据 在Java中就使用DatagramSocket这个类…

逼用户升级Win11,微软开始给Win10限速

随着Windows10的支持时间越来越短&#xff0c;微软也加大了对Win10用户的驱赶力度。 最近&#xff0c;微软官宣了将要在今年6月份降低OneNote for Windows 10的同步速度。软件也将和Windows10在今年的10月14日一同停止支持和维护。 这将影响实时协作和多设备访问。 对OneNote…

NodeJs之http模块

一、概念&#xff1a; 1、协议&#xff1a;双方必须共同遵从的一组约定。 Hypertext Transfer Protocol&#xff1a;HTTP&#xff0c;超文本传输协议 2、请求&#xff1a; ① 请求报文的组成&#xff1a; 请求行请求头空行请求体 ② 请求行&#xff1a;

26考研——图_图的应用(6)

408答疑 文章目录 四、图的应用图的应用考查形式最小生成树最小生成树概念最小生成树的性质最小生成树中某顶点到其他顶点是否具有最短路径的分析构造最小生成树的算法Prim 算法Prim 算法概述Prim 算法的构建思想Prim 算法的步骤Prim 算法的示例Prim 算法的性质 Kruskal 算法Kr…