为什么“element.innerHTML=”是错误的代码?

2024-03-19

我被告知不要使用附加内容element.innerHTML += ...像这样:

var str = "<div>hello world</div>";
var elm = document.getElementById("targetID");

elm.innerHTML += str; //not a good idea?

这是什么问题?我还有什么其他选择?


每次innerHTML设置后,必须解析 HTML、构造 DOM 并将其插入到文档中。这需要时间。

例如,如果elm.innerHTML有数千个 div、表格、列表、图像等,然后调用.innerHTML += ...会导致解析器重新解析所有这些东西再次。这也可能会破坏对已构建的 DOM 元素的引用并导致其他混乱。实际上,您所需要做的就是在末尾添加一个新元素。

最好直接打电话appendChild:

var newElement = document.createElement('div');
newElement.innerHTML = '<div>Hello World!</div>';
elm.appendChild(newElement);​​​​​​​​​​​​​​​​

这样,现有的内容elm不再解析。

NOTE:[某些]浏览器可能足够聪明来优化+=运算符而不重新解析现有内容。我没有研究过这个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么“element.innerHTML=”是错误的代码? 的相关文章

随机推荐

  • PHP 框架与内容管理系统

    您如何向精通技术 主要精通硬件 网络 但很少或根本不编程 的人解释 PHP 框架和 CMS 例如 Wordpress 之间的区别 作为一名业余到中级程序员 我可以尝试回答这些问题 但我更重视那些对框架和 CMS 更有经验的人的意见 您可以查
  • 如何在 NSMenu 中放置水平滑块(Swift 3,Xcode 8)

    从 macOS Sierra 开始 音量菜单栏项目提供了一个水平滑块项目来更改系统的音量 我想在我自己的应用程序中采用这个概念 并提出了以下课程 import Cocoa NSApplicationMain class AppDelegat
  • XSLT:如果满足条件,如何退出“for-each”循环

    如果满足条件 如何退出 XSL 中的 for each 循环 例如假设我希望 XSL 显示具有 2 间卧室且租金
  • iPhone 开发:处理大量数据时 Core-Plot 性能缓慢

    iPhone 开发 处理大量数据时 Core Plot 性能缓慢 我尝试将 500 个数据放入绘图中 性能表明它确实很慢 大多数烛台图都混合在一起 请问有人可以帮我解决吗 注意绘图区域的大小 如果数据点多于像素 请按照 benzado 建议
  • 软件测试 pdf 是否正确创建[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我用 Laravel 编写了一个 REST 应用程序 它接受 Json 有效负载并使用该数据创建格式化的 pdf 是否可以编写一个测试
  • 实体框架与 AssociateWith

    当我使用 Linq2Sql 时 我可以通过在 DataLoadOptions AssociateWith 方法中使用 lambda 表达式来过滤表 我用它来过滤所使用的语言 所以我有一个包含所有语言的语言表和一个包含对象的对象表 Like
  • 从子类访问私有继承类的名称

    以下代码无法编译 g 会出现此错误 clang 也会出现类似错误 main cpp 16 19 error QByteArray is a private member of QByteArray Container2 const QByt
  • Json 字符串到地图的转换,

    我正在尝试编写嵌套 JsonObject 到映射转换的通用代码 我有一个示例 JSONObject 作为 glossary title example glossary GlossDiv title S GlossList GlossEnt
  • ASP.Net 中的图表助手显示日期时间

    在 asp net mvc 应用程序中 我需要创建一个简单的折线图 所以我尝试了图表助手 该图表是使用两个列表创建的 x 轴应显示日期时间 y 轴应显示每个时间的值 现在使用下面的代码可以正常工作 listOfDateTimes 包含日期时
  • 当应用程序通过 gradle run 启动时,java.util.scanner 抛出 NoSuchElementException

    我创建了一个简单的 java echo 应用程序 它接受用户的输入并将其显示给他们以演示问题 我可以使用 IntelliJ 的内部 运行 命令毫无问题地运行该应用程序 并且在执行由gradle build 但是 如果我尝试使用执行应用程序g
  • 哪些递归函数不能使用循环重写? [复制]

    这个问题在这里已经有答案了 据我所知 大多数递归函数都可以使用循环重写 有些可能比其他的更难 但大多数都可以重写 在什么条件下不可能使用循环重写递归函数 如果存在这种条件 当您递归地使用函数时 编译器会为您处理堆栈管理 这使得递归成为可能
  • UIViewController 在 vi​​ewWillAppear 和 viewDidAppear 之间调整自身大小?

    我的项目中有一个非常奇怪的错误 我有一个UIScrollView作为我的主要观点 在它里面 我有一个UIViewController not UITableViewController 其中有一个UITableView实例变量 以及一些杂项
  • Wordpress 中的登录用户列表?

    是否可以获取 WordPress 中登录用户的列表 是的 有一个插件 WP OnlineUsers 您可以在这里找到这个插件 http lesterchan net portfolio programming php http lester
  • cassandra 中的行何时被覆盖

    我的理解是 当插入具有相同主键的另一行时 行将被覆盖 例如 我有专栏 user id int item id int site id int 和我的PRIMARY KEY user id item id 如果我有下表 user id ite
  • 获取手机类型

    当手机使用 PHP 连接到 mobi 网站时 有没有办法获取手机的类型 您可以使用 PHP 阅读用户代理 这可能会给您提供线索 http Detectmobilebrowsers mobi http detectmobilebrowsers
  • 非法字符错误:'\u200b'

    我正在面向对象编程课程中为小行星游戏制作小行星场 但收到非法字符错误 u200b 该问题似乎发生在第 12 行 import java awt Point 和 public class Asteroid extends PolyBlob 之
  • 回到 Rails

    因此 在离开几年后 我决定重新使用 Ruby on Rails 来完成我的一些个人项目 我想知道什么是了解 Rails 新功能的最佳资源 自从 1 2 发布以来 我什至还没有真正接触过 Rails 哦 是的 TextMate 仍然是 Mac
  • 如何替换字符串中的奇怪模式?

    我正在用 SQL 创建一个临时过程 因为我有一个用 markdown 编写的表的值 因此它在 Web 浏览器中显示为呈现的 HTML Markdown 到 HTML 的转换 该列的字符串当前如下所示 Questions about gene
  • 如何修复“App Store 连接操作错误 ITMS-90771”

    我正在尝试将我的应用程序提交到 TestFlight 但我不断收到此错误 这就是我的info plist 我该如何解决 将其添加到您的 info plist 中 然后重新提交您的应用程序
  • 为什么“element.innerHTML=”是错误的代码?

    我被告知不要使用附加内容element innerHTML 像这样 var str div hello world div var elm document getElementById targetID elm innerHTML str