html的table轉化爲二維數組 (考慮rowspan和colspan)

 

/**
* Table -> Two-dimension array 
* @param {*} value
*/
const get2DArrayByTable = ($, $trs) => {

 

let trlength = $trs.length;

 

let arr = [];
for (let i = 0; i < trlength; i++) {
arr[i] = [];
}

 

$trs.each(function(trindex, tritem) {

 

$(tritem).children('th').each(function(thindex, thitem) {

 

let rowspanCount = $(thitem).attr('rowspan');
let colspanCount = $(thitem).attr('colspan');
let value = $(thitem).text();
let colIndex = thindex;
while (arr[trindex][colIndex] !== undefined) {
colIndex++;
}
if (rowspanCount > 1 && colspanCount > 1) {
for (let i = 0; i < rowspanCount; i++) {
for (let j = 0; j < colspanCount; j++) {
arr[trindex + i][colIndex + j] = value;
}
}
} else if (rowspanCount > 1) {
for (let i = 0; i < rowspanCount; i++) {
//個別對應  rowspan定義錯誤的話,超過最大行數直接忽略。
if (trindex + i > arr.length - 1) {
break;
}

 

arr[trindex + i][colIndex] = value;
}

 

} else if (colspanCount > 1) {
for (let i = 0; i < colspanCount; i++) {
arr[trindex][colIndex + i] = value;
}

 

} else {
arr[trindex][colIndex] = value;
}

 

});

 

$(tritem).children('td').each(function(tdindex, tditem) {



let rowspanCount = $(tditem).attr('rowspan');
let colspanCount = $(tditem).attr('colspan');

 

let value = $(tditem).text();

 

let colIndex = tdindex;
while (arr[trindex][colIndex] !== undefined) {
colIndex++;
}
if (rowspanCount > 1 && colspanCount > 1) {
for (let i = 0; i < rowspanCount; i++) {
for (let j = 0; j < colspanCount; j++) {
arr[trindex + i][colIndex + j] = value;
}
}
} else if (rowspanCount > 1) {
for (let i = 0; i < rowspanCount; i++) {
//個別對應  rowspan定義錯誤的話,超過最大行數直接忽略。
if (trindex + i > arr.length - 1) {
break;
}
arr[trindex + i][colIndex] = value;
}

 

} else if (colspanCount > 1) {
for (let i = 0; i < colspanCount; i++) {
arr[trindex][colIndex + i] = value;
}

 

} else {
arr[trindex][colIndex] = value;
}

 

});



});

 

return arr;
};
相關文章
相關標籤/搜索