JSON to DOM or innerHTML?
JSON to DOM or innerHTML?
我有这个代码:
try {
var _o, _l, i, _d = new Array(), _c;
_o = JSON.Parse( Request.Response );
for ( i = 0, _l = _o.length; i < _l; i++ ) {
_d[ i ] = document.createElement('div');
_c = document.getElementById('comentsContainer');
_c.removeChild( _c.firstChild );
_d[ i ].className = 'comment-user';
_c.appendChild( _d [i] );
}
}
catch ( w ) {
console.log( w );
}
问题是,这样更好还是应该使用innerHTML?
ADD:要解析的对象:
"comments" : [
{ "user" : "foo", "comment" : "foo", "date" : "foo/foo/bar", "id_comment" : "bar" },
{ /* the same as above x10 */ }
]
请注意,我想将每个数组中的每个对象解析为DOM元素
由于这里已经有了数据的结构表示(而不是要解析的原始HTML),所以我认为您的方法(使用DOM操作方法)比使用围绕.innerHTML
构建的方法更有意义。在某些情况下,.innerHTML
已经被证明是性能上的胜利,但我不确定在拥有不错JavaScript引擎的现代浏览器上是否如此。此外,将一块HTML放入innerHTML
属性可能会带来很多好处,那就是无论如何都必须从JSON
表示中构建该HTML,这也需要时间。由于必须处理JSON
对象,因此使用DOM操作方法是一种明智的设计方法。
我想说DOM
操作是一种更干净的方法:innerHTML
是一个有点spaghetti code
的方法,您将标记语言与行为(JavaScript)混合在一起,并且最后没有一个清晰的结构。此外,在大多数现代浏览器中,DOM API
在性能方面比innerHTML
更快或相当——不幸的是,IE和Opera并非如此:
http://jsperf.com/innerhtml-or-dom/4
所以,使用DOM APIs
,也许你可以清理和优化你的代码(例如,你不需要每次循环都执行getElementById
来获得commentsContain引用,你可以把它放在外面;也不确定为什么每次添加注释都会删除第一个子项,在我看来,你可能会删除之前添加的注释,在这种情况下也可以优化)。
相关文章:
- 转义符不能与innerHTML一起使用
- 使用元素的值与innerHTML
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- Angular 2.0 with JavaScript or TypeScript?
- Javascript form innerHTML
- JavaScript上的表单和innerHTML问题
- 如何使用innerHtml正确插入html
- SharePoint 2010 Jquery/JSON Rest Multiple OR语句-如何
- GWT (or javascript) library for couchDB
- 当我更改innerHtml时,引导选项卡事件不再工作
- 一个ajax循环有两个输出错误innerHTML
- 为什么JavaScript可以'找不到给定的InnerHTML并返回Cannot set property
- Advantages to DOMParser vs template & innerHTML
- innerHTML的子字符串可以在初始调用时提取吗
- 在 Jquery/Javascript 中使用多个 OR (||) 运算符时如何设置变量
- 如何逃离<脚本>jquery html()中的标记.我使用了innerHTML和outerHTML来解决这个
- JavaScript中的逻辑OR(||)
- 确定元素是否由 JS 添加,还是原始 HTML 文档 *OR* 检测脚本何时通过 InnerHTML 更新节点
- TextNode or innerHTML
- JSON to DOM or innerHTML?