首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JS 归并表格(方法一)

2013-07-04 
JS 合并表格(方法一)/** * table单元格合并 * 合并规则:要合并的多个td name属性相同,且呈方形连续分布 *

JS 合并表格(方法一)
/** * table单元格合并 * 合并规则:要合并的多个td name属性相同,且呈方形连续分布 * @param {string} tableId */function combineTable(tableId) {var oTbl = document.getElementById(tableId);var allTds = oTbl.getElementsByTagName("td");if(allTds.length < 1) {return;}//step 1:查找需要合并的td,规则:相同name出现超过两次的td,就是需要合并的var map = new Object();for(var i = 0; i < allTds.length; i++) {var tmpTdName = allTds[i].getAttribute("name");if(tmpTdName) {map[tmpTdName] = !map[tmpTdName] ? 1 : Number(map[tmpTdName]) + 1;}}var tdNames = new Array();for(var i in map) {if(Number(map[i]) > 1) {tdNames.push(i);}}//step2 combine tds //解决IE下面getElementsByName无效问题var commonGetElementsByName = function(parentDom, tagName, name) {var result = new Array();var doms = parentDom.getElementsByTagName(tagName);for (var i = 0; i < doms.length; i++) {if (doms[i].getAttribute("name") == name) {result.push(doms[i]);}}return result;};var tdsToDelete = new Array();for (var i = 0; i < tdNames.length; i++) {var tdsToCombine = commonGetElementsByName(oTbl, "td", tdNames[i]);var tdFirst = tdsToCombine[0];var tdLast = tdsToCombine[tdsToCombine.length - 1];var colspan = tdLast.cellIndex - tdFirst.cellIndex + 1;var rowspan = 1;for (var j = 0; j < tdsToCombine.length; j++) {var aTd = tdsToCombine[j];//calculate rowspanif (j > 0 && tdsToCombine[j].parentNode != tdsToCombine[j - 1].parentNode) {rowspan++;}//暂存要删除的if (aTd != tdFirst) {tdsToDelete.push(aTd);}}if(colspan > 1) {tdFirst.setAttribute("colspan", colspan);tdFirst.colSpan = colspan;}if(rowspan > 1) {tdFirst.setAttribute("rowspan", rowspan);tdFirst.rowSpan = rowspan;}}//delete at lastfor (var i = 0; i < tdsToDelete.length; i++) {tdsToDelete[i].parentNode.removeChild(tdsToDelete[i]);}}

?

热点排行
Bad Request.