【发布时间】:2018-04-07 02:29:14
【问题描述】:
我有以下 javascript:
// create a new article tag
var elem = document.createElement('article');
// append the article to the comments list
document.querySelector('#comments-list').appendChild(elem);
我想设置文章的内容,并为其添加一些类,所以我正在研究两种方法:
// Option 1
// set the content using .innerHTML()
// and add the classes manually to the classList
elem.innerHTML = "This is the comment";
elem.classList.add('comment');
// Option 2
// set the content and classes in one go using .outerHTML()
elem.outerHTML = "<article class='comment'>This is the comment</article>";
两者都很好用,但我注意到需要在将元素附加到 DOM 之前调用 .innerHTML,而在将元素添加到 DOM 之后需要调用 outerHTML。
我更喜欢第二个选项,因为我实际上是在这个 javascript 文件中呈现 Rails 部分,并且有一个更可取的细微差别。
我的问题是这些技术中的一种是否比另一种更好?将元素添加到 DOM 之后再更改它的 HTML 是否有问题?或者从性能的角度来看,在写入 DOM 之前设置 innerHTML 是否更好?
【问题讨论】:
-
嗯,你确实提到了,innerHTML 可以在元素未附加到 DOM 时设置,如果在操作期间不更新 DOM,大型操作往往会更快跨度>
-
setting outerHTML 是不必要的糟糕。只需使用
elem.className="comment" -
这是个人意见,大多数个人意见会说设置 outerHTML 很糟糕
-
使用内部 html 也不应该真正使用,而是创建
-
一个文本节点并插入到文章元素中
标签: javascript