为什么建议避免使用 .innerHTML?

IT技术 javascript
2021-03-11 08:08:34

对不起,我是一个 JavaScript 菜鸟,但谁能解释一下为什么不建议使用.innerHTML. 当我们有了以 形式更快更容易的东西时,我们.innerHTML为什么不应该使用它呢?

1个回答

innerHTML是一把大锤。它会炸掉所选 DOM 元素的内容,并用当时分配的任何内容替换它们。这会导致许多 HTML 转义和验证问题。

更重要的是,对于绑定了大量事件的页面,使用innerHTMLappend 另一个元素会重新生成 DOM 元素,这意味着事件绑定可能会丢失。

当元素从 DOM 中删除时,旧版本的 IE 中也存在一些关于内存泄漏的问题。


综上所述,我并不是要告诉您不应该使用innerHTML. 当我使用$(selector).html(). 有时,大锤是完成这项工作的正确工具,当事件被正确委派时,重新加载多少内容并不重要。

+1,我喜欢大锤的比喻。如果你知道如何正确使用innerHTML,你可以节省很多时间……只要你不需要做一些狡猾的工作。就像锤子一样。
2021-04-29 08:08:34
IIRC 我记得 Resig 为各种浏览器做了一些 hack,因为innerHtml 的性能差异。我想更有理由使用包装器。
2021-05-08 08:08:34
+1,我几乎忘记了那些尝试过element.innerHTML += ...然后注意到来自该元素后代的所有事件处理程序/关联小部件是如何被丢弃的人。
2021-05-10 08:08:34