如何从 HTML 字符串创建 DOM 元素(多种方法)

当我们需要创建简单的动态 html dom 元素时,我们可以使用 html 字符串模板。在 javascript 中有很多不同的方法可以实现这一点,但我们可能有一些考虑。

内部html

如何从 HTML 字符串创建 DOM 元素(多种方法)

const container = document.createelement('div');container.innerhtml = `
hello world
`;const node = container.firstelementchild;

登录后复制

这是最常见的方法之一。将html字符串插入到容器元素的innerhtml中,然后访问生成的dom节点。

但是,它只能处理有效的 html 节点,即标准 html 结构中合法的元素。例如,如果您尝试将

元素插入 ,则不会创建该节点。

如何从 HTML 字符串创建 DOM 元素(多种方法)

此外,该方法不会执行html字符串中的任何脚本,这在处理不受信任的内容时更安全。

立即学习“前端免费学习笔记(深入)”;

innerhtml + 模板元素

如何从 HTML 字符串创建 DOM 元素(多种方法)

const template = document.createelement('template');template.innerhtml = `
hello world
`;const node = template.content.firstelementchild;

登录后复制

使用 标签的优点是没有内容限制,可以包含任何类型的 html 结构,包括 和 等与表格相关的元素。

如何从 HTML 字符串创建 DOM 元素(多种方法)

插入相邻html

如何从 HTML 字符串创建 DOM 元素(多种方法)

const container = document.createelement("div");container.insertadjacenthtml("afterbegin", `
hello world
`);const node = container.firstelementchild;

登录后复制

该方法与innerhtml类似,只能处理有效的html节点。它也不会执行脚本。

dom解析器

如何从 HTML 字符串创建 DOM 元素(多种方法)

const node = new domparser().parsefromstring(`
hello world
`, "text/html").body.firstelementchild;

登录后复制

该方法通过创建完整的 html 文档来解析字符串,然后从文档中提取节点。这意味着它比其他解决方案相对慢,不建议使用。

它只能处理有效的 html 节点,不会执行脚本。

range.createcontextualfragment

如何从 HTML 字符串创建 DOM 元素(多种方法)

const node = document.createRange().createContextualFragment(`
Hello World
`).firstElementChild;

登录后复制

这个方法可能是最简单的。默认情况下它也只能处理有效的 html 节点。但是,我们可以设置上下文来避免这种情况。

如何从 HTML 字符串创建 DOM 元素(多种方法)

请注意,它会执行 html 字符串中的脚本,因此在处理不受信任的内容时要特别小心,例如使用 dompurify 等清理器。

如何从 HTML 字符串创建 DOM 元素(多种方法)

结论

针对不同的情况,您可能需要选择最适合您的方法。

如果您觉得我的内容有帮助,请考虑订阅。我每天发送一份时事通讯,其中包含最新的网络开发更新。感谢您的支持!

以上就是如何从 HTML 字符串创建 DOM 元素(多种方法)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2672193.html

(0)
上一篇 2025年3月7日 13:22:51
下一篇 2025年2月23日 02:48:54

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 什么是 Kubernetes?印度讲故事风格

    Kubernetes 是一个帮助管理打包在容器中的计算机程序的工具。它确保这些程序顺利运行,即使有很多人在使用它们。 Kubernetes 可以根据需要启动或停止这些程序,将它们放在不同的计算机上,并确保它们正常工作。它对于需要同时处理许多…

    2025年3月7日
    200
  • 如何将 PostgreSQL 与 Nodejs 和 Sequelize 连接

    在使用数据库时,开发人员经常面临选择是使用原始数据库查询还是利用抽象出一些复杂性的库。 sequelize 就是这样一个库——一种流行的 node.js orm(对象关系映射器),可与 postgresql、mysql 和其他关系数据库配合…

    2025年3月7日
    200
  • 理解 JavaScript 中的作用域链

    在 javascript 中,作用域链是一种定义变量解析在嵌套函数中如何工作的机制。它决定了引用变量时查找变量的顺序。 作用域链的工作原理是首先在局部作用域中查找变量,然后向上移动到外部(父)作用域,最后在必要时查找全局作用域。这个过程一直…

    2025年3月7日
    200
  • 我如何在启动 ScriptKavi/Hooks 后数周内获得星星

    介绍 当我第一次构想 scriptkavi/hooks 时,我的目标是创建一个能够简化 React 应用程序中的状态管理和副作用的库。作为一名热衷于干净代码和高效开发工作流程的开发人员,我看到需要一种可以简化这些流程的工具。我几乎不知道,在…

    2025年3月7日
    200
  • 伟大的软件工程师出走:就业市场的转变

    介绍 世界正在见证一种现象,软件工程师正在积极寻找新的工作机会,导致寻找工作的工程师数量激增。这种趋势对科技行业、公司和工程师本身具有重大影响。 工程师寻找工作的普遍程度 最新统计数据表明: 超过70%的软件工程师正在积极寻找新的工作机会软…

    2025年3月7日
    200
  • 我给我的猫做了一个网站^~^

    sox 是一只英俊的年轻流浪猫,曾经在洛杉矶韩国城公寓大楼外的街道上漫步。现在他和他的新妈妈和爸爸住在里面。 (点击猫哈哈) 以上就是我给我的猫做了一个网站^~^的详细内容,更多请关注【创想鸟】其它相关文章!

    2025年3月7日
    200
  • 了解 JavaScript 中的原始数据类型

    javascript 有七种基本数据类型,每个开发人员都必须理解它们。这些类型构成了更复杂数据结构的构建块,对于高效编程至关重要。在本文中,我们将探讨 javascript 中的不同原始数据类型、它们的特性以及它们的使用方式。 什么是原始数…

    2025年3月7日
    200
  • Chrome、Safari 和 Firefox 中的用户代理减少

    简介:什么是用户代理减少和客户端提示? 近年来,隐私问题推动了浏览器处理用户代理字符串的方式发生了重大变化。传统上用于识别浏览器和设备信息的用户代理字符串已被减少以限制共享的信息量,从而保护用户隐私。为了解决减少用户代理的局限性,客户端提示…

    2025年3月7日
    200
  • Vuetify ayout Builder

    网址 https://vuetify-layout-builder.netlify.app/ 动机 我使用 Vuetify 一段时间了。我在搜索其他设计库时遇到了 Quasar Layout Builder。受到其功能的启发,我决定为 Vu…

    2025年3月7日
    200
  • 使用 @defer 和延迟加载提升角度性能

    介绍 angular 中新的 @defer 功能是框架增强性能的一部分,特别是在延迟加载和渲染优化方面。以下是 @defer 功能以及 @placeholder 和 @loading 块的快速概述。 @defer 概述 目的 @defer …

    2025年3月7日 编程技术
    200

发表回复

登录后才能评论