function sumColumns(tableId, colIndices) {
const table = document.getElementById(tableId);
const sums = new Array(colIndices.length).fill(0);
// 遍历除表头外的所有行,累加各指定列的值
for(let i = 1; i < table.rows.length; i++) {
colIndices.forEach((colIndex, idx) => {
const cell = table.rows[i].cells[colIndex];
if(cell) {
const value = parseFloat(cell.textContent) || 0;
sums[idx] += value;
}
});
}
// 创建合计行并插入(如果最后一行已经是合计行则先删除)
const lastRow = table.rows[table.rows.length - 1];
if (lastRow && lastRow.getAttribute('data-summary-row') === 'true') {
table.deleteRow(table.rows.length - 1);
}
const newRow = table.insertRow(-1);
newRow.setAttribute('data-summary-row', 'true');
const cellCount = table.rows[0].cells.length;
for(let i = 0; i < cellCount; i++) {
const newCell = newRow.insertCell(i);
newCell.style.textAlign = 'center';
newCell.style.backgroundColor = '#FFFFAA';
newCell.style.border = '1px solid #000000';
if(i === 1) {
newCell.textContent = '合计';
newCell.style.fontWeight = 'bold';
} else {
const sumIndex = colIndices.indexOf(i);
if(sumIndex !== -1) {
newCell.textContent = sums[sumIndex];
newCell.style.fontWeight = 'bold';
} else {
newCell.textContent = '';
}
}
}
}
function getColumnIndexByChar(tableId, char) {
const table = document.getElementById(tableId);
if (!table) return -1;
const firstRow = table.rows[0];
if (!firstRow) return -1;
for (let i = 0; i < firstRow.cells.length; i++) {
if (firstRow.cells[i].textContent.includes(char)) {
return i; // 返回包含该字符的列索引
}
}
return -1; // 未找到包含该字符的列
}
// 使用示例
const index1 = getColumnIndexByChar('result_table', '件数');
const index2 = getColumnIndexByChar('result_table', '吨数');
console.log(index1);
console.log(index2);
var colindexarry=[];
colindexarry.push(index1);
colindexarry.push(index2);
sumColumns('result_table', colindexarry);
sumColumns('result_table', [2, 3, 5]);