`
czpae86
  • 浏览: 720691 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用createDocumentFragment不要使用innerHTML

 
阅读更多

借助createDocumentFragment创建的table效果:


代码片段1:

<fieldset>
    		<legend><em class="t-tool t-tool-toggle">&nbsp;</em>案件资料</legend>
    		<table border=1 cellPadding=0 cellSpacing=0 style="margin:5px;width:840px;">
    			<tr><th width="40px" style="text-align:center;">序号</th><th width="480px" style="text-align:center;">名称</th><th width="90px"  style="text-align:center;">分类</th><th width="160px"  style="text-align:center;">上传时间</th><th width="70px"  style="text-align:center;">&#160;</th></tr>
    			<tbody id="case_files">
    			</tbody>    			
    		</table>
    	</fieldset>
 

 

代码片段2:

var documentFragment = document.createDocumentFragment();
				for(var j=0,len=o.resultList.length;j<len;j++){
					var d = o.resultList[j];
					var tr = document.createElement('tr');
					
					var td1 = document.createElement('td');
					var txt1 = document.createTextNode((j+1));
					td1.width = "40px";
					td1.style.textAlign = 'center'; 
					
					var td2 = document.createElement('td');
					var txt2 = document.createTextNode(d['DOWNLOAD_FILE_NAME']);
					td2.width = "480px";	
					
					var td3 = document.createElement('td');
					var txt3 = document.createTextNode(d['TITLE']);
					td3.width = "90px";
					td3.style.textAlign = 'center'; 
					
					var td4 = document.createElement('td');
					var txt4 = document.createTextNode(d['CREATE_TIME']);
					td4.width = "160px";
					td4.style.textAlign = 'center'; 
					
					var td5 = document.createElement('td');
					td5.width = "70px";
					td5.style.textAlign = 'center';
					var link = document.createElement('a');
					link.href = Spider.getAppName()+'/file/storage/download.json?fileId='+d['FILE_ID']+'&isOnLine=no';
					var txt5 = document.createTextNode('下载');
					link.appendChild(txt5);
					
					td1.appendChild(txt1);
					td2.appendChild(txt2);
					td3.appendChild(txt3);
					td4.appendChild(txt4);
					td5.appendChild(link);
					
					tr.appendChild(td1);
					tr.appendChild(td2);
					tr.appendChild(td3);
					tr.appendChild(td4);
					tr.appendChild(td5);
					
					documentFragment.appendChild(tr);
				}
				document.getElementById("case_files").appendChild(documentFragment);

 

在使用过程中曾经试过用innerHTML = "<tr><td>test</td></tr>......";发现有时候存在浏览器兼容问题和效率问题。

借助createDocumentFragment还可以防止页面闪屏的问题。

  • 大小: 4.4 KB
分享到:
评论

相关推荐

    javascript 异步的innerHTML使用分析

    如今,另一种更奇特的技术Asynchronous innerHTML又被开发出来了,不能不赞一下外国人在这方面研究是非常超前的。 代码如下: function asyncInnerHTML(HTML, callback) { var temp = document.createElement(‘div’...

    通过改变innerHTML的内容,动态增加选择项

    因此,在处理大量数据时,更推荐使用`createDocumentFragment`或`appendChild`等方法,它们可以提高性能。 总结来说,通过改变`innerHTML`的内容,我们可以动态地向页面元素中添加HTML,包括在`&lt;select&gt;`元素中添加...

    createElement与createDocumentFragment的点点区别小结

    然而,需要注意的是,`createDocumentFragment`创建的元素不能直接设置`innerHTML`属性,因为`innerHTML`通常用于操作实际存在于DOM中的元素。当你尝试为文档片段设置`innerHTML`时,它只会作为一个属性存储,而不会...

    innerHTML 和 getElementsByName 在IE下面的bug 的解决

    为了实现更好的兼容性和性能,可以考虑使用`document.createDocumentFragment()`方法来构建新的HTML字符串,然后再将其插入到DOM中,以减少对`innerHTML`的依赖。同时,可以利用`Array.prototype.filter()`或简单的...

    JavaScript执行效率优化及内存管理优化.docx

    1.1.3 使用innerHTML一次性赋值 在构建列表等大量DOM结构时,通过设置innerHTML属性替换逐个创建DOM元素,性能提升显著。 优化前: ```javascript var frag = document.createDocumentFragment(); for (var i = 0; ...

    一些高性能的Javascript代码.doc

    3. **使用innerHTML赋值代替构建DOM元素** 在生成大量列表样式的场景下,一次性设置容器的innerHTML属性通常比逐个创建并添加DOM元素更快。这种方法可以避免频繁的DOM操作,从而大幅提升性能。例如: ```...

    JS提高优化性能完全秘籍.pdf

    在构建列表样式时,使用innerHTML直接赋值的方式比逐个创建DOM元素并append到页面中的方式,效率有显著的提升。 **示例对比:** - **服用前:** ```javascript // 如上文中的for循环,逐个创建和追加元素到body ```...

    IE8兼容栏目树orgchart的使用

    6. **DOM遍历与操作**:IE8的DOM操作相对复杂,例如,需要使用`innerHTML`而非`textContent`来设置元素内容,`createDocumentFragment`可能不可用,需要使用其他方式创建和插入DOM节点。 7. **动画效果**:IE8不...

    利用javascript动态添加行(原创)

    此外,使用`createDocumentFragment()`可以减少DOM重绘,提高性能。 通过这些技术,开发者可以实现灵活的用户界面,使应用程序更加互动和响应。熟练掌握JavaScript动态添加行的方法对于开发复杂的Web应用至关重要。

    jsj table tr td 增删改

    在实际应用中,你可能还需要考虑性能优化,例如,使用`innerHTML`大量修改DOM时可能会影响页面性能,这时可以考虑使用`createDocumentFragment`和批量操作。此外,如果涉及到更复杂的交互,可以引入jQuery或其他库来...

    js表格操作,DOM实现数据动态增删查改

    8. **优化性能**:由于频繁的DOM操作可能导致性能下降,可以考虑使用`innerHTML`一次性更新整个表格,或者使用`createDocumentFragment()`来批量处理DOM操作,以减少重绘和回流。 9. **响应式设计**:为了确保表格...

    JS动态添加

    - **避免不必要的DOM操作**:频繁操作DOM会降低页面性能,因此应尽量减少DOM操作次数,比如使用`document.createDocumentFragment()`。 - **批量操作**:一次性处理多个元素比逐个处理更快,可以先存储在数组中,...

    JavaScript动态添加删除表格行

    频繁的DOM操作可能会影响页面性能,因此在大量操作时,可以考虑使用`innerHTML`一次性更新,或者使用`document.createDocumentFragment`来减少重绘和回流。 5. **兼容性问题**: JavaScript的某些DOM操作在旧版本...

    第06章 DOM节点操作(上)

    因此,可以使用`createDocumentFragment`在内存中构建新结构,再一次性插入,或者利用`requestAnimationFrame`在下一次重绘前进行批量修改。 在实际应用中,工具类库如jQuery、React等提供了更高级别的抽象,简化了...

    documen对象参考手册使用详解

    10. **DOM遍历与操作**:`document.createDocumentFragment()`创建一个文档片段,可用来批量添加元素而不立即触发重绘。`Node`接口提供了如`appendChild()`, `removeChild()`, `replaceChild()`等方法,用于操作DOM...

    前端js基础测试题.pdf

    - **创建节点**:使用`createDocumentFragment()`创建DOM片段,`createElement()`创建元素,`createTextNode()`创建文本节点。 - **添加/移除/替换/插入节点**:`appendChild()`用于添加子节点,`removeChild()`...

    一些用js实现的特效

    例如,可以使用`document.getElementById`或`querySelector`等方法获取特定元素,`innerHTML`或`textContent`属性改变元素内容,以及`style`对象调整元素样式。 2. **动画效果** JavaScript可以实现各种动画效果,...

    js中的DocumentFragment1

    创建 DocumentFragment 可以使用 document.createDocumentFragment 方法或者构造函数来创建一个空的 DocumentFragment。 DocumentFragment 的属性继承自 Node,並补充了 ParentNode 接口中的属性。例如,ParentNode...

    JS让信息一条一条上浮(浏览器兼容)

    6. **优化性能**:避免频繁的DOM操作,可以使用`createDocumentFragment`来批量处理多个DOM元素,或者使用`textContent`而非`innerHTML`来提高性能。 通过以上步骤,我们可以实现一个功能完善的JS状态栏,它能够在...

Global site tag (gtag.js) - Google Analytics