经常遇到一些数据表格,进行数据单元格合并,这次又遇到了,网上找的,用着有的并,有的不并。。一气之下,自己写了一个:
function colUnion(tb_id, sc, ec) { // 从sc列开始往后,直到ec列结束;sc,ec为第几列的列号 var tb = document.getElementById(tb_id); var tb_rows = tb.rows.length; var tb_cols = tb.rows[2].cells.length; // 给每个单元格一个id for (i = 1; i < tb_rows; i++) { for (j = 0; j < tb_cols; j++) { tb.rows[i].cells[j].id = "td" + i.toString() + j.toString(); } } // 开始合并: ec = ec - 1; sc = sc - 1; for (j = ec; j >= sc; j--) { // 行 for (i = 1; i < tb_rows - 1; i++) { var obj1 = document.getElementById("td" + i.toString() + j.toString()); var obj2 = document.getElementById("td" + (i + 1) + j.toString()); if (obj1.innerHTML == obj2.innerHTML) { // 前方的单元格内容一样 if (j > 0) { var of1 = document.getElementById("td" + i.toString() + (j - 1).toString()); var of2 = document.getElementById("td" + (i + 1) + (j - 1).toString()); if (of1.innerHTML == of2.innerHTML) { obj1.id = obj2.id; union(obj1, obj2); } } else { obj1.id = obj2.id; union(obj1, obj2); } } } } } function union(obj1, obj2) { obj1.rowSpan++; obj2.parentNode.removeChild(obj2); }