合并 HTML table 个具有相同值且位于同一行的单元格
Merge HTML table cells, that have the same value and are in the same row
我想合并同一行中具有相同文本值的单元格。我在这里发现了很多类似的问题,但它们都与另一行中的一个单元格合并。
这就是我的想象:
Before:
------------------------------------------------------------------------
| A | A | A | B |
------------------------------------------------------------------------
| C | B | B | B |
------------------------------------------------------------------------
| C | C | D | E |
------------------------------------------------------------------------
After:
------------------------------------------------------------------------
| A | B |
------------------------------------------------------------------------
| C | B |
------------------------------------------------------------------------
| C | D | E |
------------------------------------------------------------------------
提前致谢。
我想 colspan 就是您要找的。
如果您在 HTML table
中使用静态数据,则需要在 HTML 中使用 colspan
属性
<table>
<tr>
<td colspan="3">A</td>
<td>B</td>
</tr>
<tr>
<td>C</td>
<td colspan="3">B</td>
</tr>
<tr>
<td colspan="2">C</td>
<td>D</td>
<td>E</td>
</tr>
</table>
假设你有这个 HTML:
<table id="table">
<tr>
<td colspan="1">A</td>
<td colspan="1">A</td>
<td colspan="1">A</td>
<td colspan="1">B</td>
</tr>
<tr>
<td colspan="1">C</td>
<td colspan="1">B</td>
<td colspan="1">B</td>
<td colspan="1">B</td>
</tr>
<tr>
<td colspan="1">C</td>
<td colspan="1">C</td>
<td colspan="1">D</td>
<td colspan="1">E</td>
</tr>
</table>
您可以在 JS 中执行类似的操作来合并单元格:
'use strict';
const deep = true;
const tableEl = document.getElementById('table').cloneNode(deep);
const nodesToRemove = [];
for (const childRow of tableEl.children) {
let currNode = undefined;
for (const td of childRow.children) {
let lastNode = (currNode) ? currNode.cloneNode(deep) : undefined;
currNode = td;
if (lastNode && (lastNode.innerText === currNode.innerText)) {
let colSpanVal = lastNode.getAttribute('colspan');
currNode.setAttribute('colspan', Number(colSpanVal) + 1);
lastNode = currNode.cloneNode(deep);
nodesToRemove.push(currNode.previousElementSibling);
}
}
}
for (const node of nodesToRemove) {
node.remove();
}
document.getElementById('table').replaceWith(tableEl);
您可以通过在 HTML 标记(table 数据)中使用 colspan 属性来合并一列中的两个或多个 table 单元格。要合并两个或多个行单元格,请使用 rowspan 属性。
如果要合并第一列中的前两个单元格,可以在第一个标记中使用 colspan="2" 属性。数字表示要为标签使用(合并)多少个单元格。
但是,如果要将第一列的前两个单元格合并为一个单元格,可以在第一个标记中使用 rowspan="2" 属性。数字表示要用于标记的单元格数。
N.B:colspan 和rowspan 中的数字也可以使用“0”。
所有现代浏览器都将 colspan 和 rowspan 中的“0”(零)视为最大行数或列数。例如,不计算 table 的行数,而是使用 rowspan="0" 将行扩展到 table 的末尾。使用“0”有助于大 tables 和行数和列数可能经常变化的动态 tables。
有关更多详细信息,请访问 https://www.computerhope.com/issues/ch001655.htm
谢谢!
我想合并同一行中具有相同文本值的单元格。我在这里发现了很多类似的问题,但它们都与另一行中的一个单元格合并。
这就是我的想象:
Before:
------------------------------------------------------------------------
| A | A | A | B |
------------------------------------------------------------------------
| C | B | B | B |
------------------------------------------------------------------------
| C | C | D | E |
------------------------------------------------------------------------
After:
------------------------------------------------------------------------
| A | B |
------------------------------------------------------------------------
| C | B |
------------------------------------------------------------------------
| C | D | E |
------------------------------------------------------------------------
提前致谢。
我想 colspan 就是您要找的。
如果您在 HTML table
中使用静态数据,则需要在 HTML 中使用colspan
属性
<table>
<tr>
<td colspan="3">A</td>
<td>B</td>
</tr>
<tr>
<td>C</td>
<td colspan="3">B</td>
</tr>
<tr>
<td colspan="2">C</td>
<td>D</td>
<td>E</td>
</tr>
</table>
假设你有这个 HTML:
<table id="table">
<tr>
<td colspan="1">A</td>
<td colspan="1">A</td>
<td colspan="1">A</td>
<td colspan="1">B</td>
</tr>
<tr>
<td colspan="1">C</td>
<td colspan="1">B</td>
<td colspan="1">B</td>
<td colspan="1">B</td>
</tr>
<tr>
<td colspan="1">C</td>
<td colspan="1">C</td>
<td colspan="1">D</td>
<td colspan="1">E</td>
</tr>
</table>
您可以在 JS 中执行类似的操作来合并单元格:
'use strict';
const deep = true;
const tableEl = document.getElementById('table').cloneNode(deep);
const nodesToRemove = [];
for (const childRow of tableEl.children) {
let currNode = undefined;
for (const td of childRow.children) {
let lastNode = (currNode) ? currNode.cloneNode(deep) : undefined;
currNode = td;
if (lastNode && (lastNode.innerText === currNode.innerText)) {
let colSpanVal = lastNode.getAttribute('colspan');
currNode.setAttribute('colspan', Number(colSpanVal) + 1);
lastNode = currNode.cloneNode(deep);
nodesToRemove.push(currNode.previousElementSibling);
}
}
}
for (const node of nodesToRemove) {
node.remove();
}
document.getElementById('table').replaceWith(tableEl);
您可以通过在 HTML 标记(table 数据)中使用 colspan 属性来合并一列中的两个或多个 table 单元格。要合并两个或多个行单元格,请使用 rowspan 属性。
如果要合并第一列中的前两个单元格,可以在第一个标记中使用 colspan="2" 属性。数字表示要为标签使用(合并)多少个单元格。
但是,如果要将第一列的前两个单元格合并为一个单元格,可以在第一个标记中使用 rowspan="2" 属性。数字表示要用于标记的单元格数。
N.B:colspan 和rowspan 中的数字也可以使用“0”。 所有现代浏览器都将 colspan 和 rowspan 中的“0”(零)视为最大行数或列数。例如,不计算 table 的行数,而是使用 rowspan="0" 将行扩展到 table 的末尾。使用“0”有助于大 tables 和行数和列数可能经常变化的动态 tables。
有关更多详细信息,请访问 https://www.computerhope.com/issues/ch001655.htm
谢谢!