日期:2014-05-16 浏览次数:20320 次
?
本文转自:http://hi.baidu.com/jz1108/blog/item/81ebe6b4561c247b8ad4b2ef.html
?
一日,同事说他习惯用inserRow和insertCell方法操作table元素,并说这个效率要比createElement和appendChild来的高。我不信,于是做了如下试验:使用不同方式创建一个1000行X10列的表格,对比代码所耗时间。
???
方法一:使用insertRow和insertCell
var table = document.createElement("table"); document.body.appendChild(table); for (var i = 0; i < 1000; i ++){ var row = table.insertRow(table.rows.length); for (var j = 0; j < 10; j ++){ var cell = row.insertCell(row.cells.length); cell.innerHTML = "(" + i + ", " + j + ")"; } }
以上代码执行时间为:172.688秒,整个过程中CPU占用率飙升到100%,IE也进入装死的状态。
方法二:使用createElement和appendChild
var table = document.createElement("table"); document.body.appendChild(table); var tbody = document.createElement("tbody"); table.appendChild(tbody); for (var i = 0; i < 1000; i ++){ var row = document.createElement("tr"); tbody.appendChild(row); for (var j = 0; j < 10; j ++){ var cell = document.createElement("td"); cell.innerHTML = "(" + i + ", " + j + ")"; row.appendChild(cell); } }
以上代码执行时间为:3.026秒,速度提高这么多。
?
当然这还不是最快的,请看方法三:
var htmls = []; htmls.push("<table>"); for (var i = 0; i < 1000; i ++){ htmls.push("<tr>") for (var j = 0; j < 10; j ++){ htmls.push("<td>(" + i + ", " + j + ")</td>"); } htmls.push("</tr>"); } htmls.push("</table>"); document.getElementById("div1").innerHTML = htmls.join("");
这段代码执行时间是0.281秒。
?
可见使用innerHTML方式是最快的,createElement和appendhChild其次,最慢的是insertRow和insertCell。