借助createDocumentFragment创建的table效果:
代码片段1:
<fieldset>
<legend><em class="t-tool t-tool-toggle"> </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;"> </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
分享到:
相关推荐
如今,另一种更奇特的技术Asynchronous innerHTML又被开发出来了,不能不赞一下外国人在这方面研究是非常超前的。 代码如下: function asyncInnerHTML(HTML, callback) { var temp = document.createElement(‘div’...
因此,在处理大量数据时,更推荐使用`createDocumentFragment`或`appendChild`等方法,它们可以提高性能。 总结来说,通过改变`innerHTML`的内容,我们可以动态地向页面元素中添加HTML,包括在`<select>`元素中添加...
然而,需要注意的是,`createDocumentFragment`创建的元素不能直接设置`innerHTML`属性,因为`innerHTML`通常用于操作实际存在于DOM中的元素。当你尝试为文档片段设置`innerHTML`时,它只会作为一个属性存储,而不会...
为了实现更好的兼容性和性能,可以考虑使用`document.createDocumentFragment()`方法来构建新的HTML字符串,然后再将其插入到DOM中,以减少对`innerHTML`的依赖。同时,可以利用`Array.prototype.filter()`或简单的...
1.1.3 使用innerHTML一次性赋值 在构建列表等大量DOM结构时,通过设置innerHTML属性替换逐个创建DOM元素,性能提升显著。 优化前: ```javascript var frag = document.createDocumentFragment(); for (var i = 0; ...
3. **使用innerHTML赋值代替构建DOM元素** 在生成大量列表样式的场景下,一次性设置容器的innerHTML属性通常比逐个创建并添加DOM元素更快。这种方法可以避免频繁的DOM操作,从而大幅提升性能。例如: ```...
在构建列表样式时,使用innerHTML直接赋值的方式比逐个创建DOM元素并append到页面中的方式,效率有显著的提升。 **示例对比:** - **服用前:** ```javascript // 如上文中的for循环,逐个创建和追加元素到body ```...
6. **DOM遍历与操作**:IE8的DOM操作相对复杂,例如,需要使用`innerHTML`而非`textContent`来设置元素内容,`createDocumentFragment`可能不可用,需要使用其他方式创建和插入DOM节点。 7. **动画效果**:IE8不...
此外,使用`createDocumentFragment()`可以减少DOM重绘,提高性能。 通过这些技术,开发者可以实现灵活的用户界面,使应用程序更加互动和响应。熟练掌握JavaScript动态添加行的方法对于开发复杂的Web应用至关重要。
在实际应用中,你可能还需要考虑性能优化,例如,使用`innerHTML`大量修改DOM时可能会影响页面性能,这时可以考虑使用`createDocumentFragment`和批量操作。此外,如果涉及到更复杂的交互,可以引入jQuery或其他库来...
8. **优化性能**:由于频繁的DOM操作可能导致性能下降,可以考虑使用`innerHTML`一次性更新整个表格,或者使用`createDocumentFragment()`来批量处理DOM操作,以减少重绘和回流。 9. **响应式设计**:为了确保表格...
- **避免不必要的DOM操作**:频繁操作DOM会降低页面性能,因此应尽量减少DOM操作次数,比如使用`document.createDocumentFragment()`。 - **批量操作**:一次性处理多个元素比逐个处理更快,可以先存储在数组中,...
频繁的DOM操作可能会影响页面性能,因此在大量操作时,可以考虑使用`innerHTML`一次性更新,或者使用`document.createDocumentFragment`来减少重绘和回流。 5. **兼容性问题**: JavaScript的某些DOM操作在旧版本...
因此,可以使用`createDocumentFragment`在内存中构建新结构,再一次性插入,或者利用`requestAnimationFrame`在下一次重绘前进行批量修改。 在实际应用中,工具类库如jQuery、React等提供了更高级别的抽象,简化了...
10. **DOM遍历与操作**:`document.createDocumentFragment()`创建一个文档片段,可用来批量添加元素而不立即触发重绘。`Node`接口提供了如`appendChild()`, `removeChild()`, `replaceChild()`等方法,用于操作DOM...
- **创建节点**:使用`createDocumentFragment()`创建DOM片段,`createElement()`创建元素,`createTextNode()`创建文本节点。 - **添加/移除/替换/插入节点**:`appendChild()`用于添加子节点,`removeChild()`...
例如,可以使用`document.getElementById`或`querySelector`等方法获取特定元素,`innerHTML`或`textContent`属性改变元素内容,以及`style`对象调整元素样式。 2. **动画效果** JavaScript可以实现各种动画效果,...
创建 DocumentFragment 可以使用 document.createDocumentFragment 方法或者构造函数来创建一个空的 DocumentFragment。 DocumentFragment 的属性继承自 Node,並补充了 ParentNode 接口中的属性。例如,ParentNode...
6. **优化性能**:避免频繁的DOM操作,可以使用`createDocumentFragment`来批量处理多个DOM元素,或者使用`textContent`而非`innerHTML`来提高性能。 通过以上步骤,我们可以实现一个功能完善的JS状态栏,它能够在...