【发布时间】:2019-04-17 21:17:51
【问题描述】:
假设我的代码非常简单,如下所示:
let content = "";
for(let i=0; i<array.length; i++){
content+='<h1>array[i]</h1>';
}
document.getElementById('some_id').innerHTML = content;
我不喜欢将 HTML 放入我的 JavaScript 代码的想法,但我不知道在不使用 innerHTML、JQuery 的 html() 方法或简单地创建新 DOM 的情况下将元素插入 DOM 的任何其他方法以编程方式添加元素。
在业界或最佳实践中,从 JavaScript 插入 HTML 元素的最佳方式是什么?
提前致谢!
【问题讨论】:
-
您可以使用
document.createElement和nodeYouWishToExtend.appendChild(nodeYouCreated)。对于另一种方法,您可以查看 React、Angular、Vue、Knockout 等框架。 -
最佳实践是创建 DOM 元素对象并将文本插入到这些元素中以防范 XSS
-
ps 你的预感认为在 javascript 中编写 html 是“糟糕的”,这在很大程度上是正确的。我不知道
array来自哪里,但假设用户可以更改它,他们可能会潜入一些“不安全”的值。例如<script type="text/javascript">doBadThing()</script>。除非你要转义你的输入,或者使用一个库,否则你不应该直接使用用户来源的输入来设置 innerHTML。 -
content+='<h1>array[i]</h1>';不会评估array[i]而是将其打印为文本。
标签: javascript html dom innerhtml