日期:2014-05-16 浏览次数:20431 次
?
本文转自: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。