Start · Sprachen · JavaScript · Referenz · HTMLTableRowElement.deleteCell()

HTMLTableRowElement.deleteCell()

Methode

Entfernt die Zelle (<code>&lt;td&gt;</code> oder <code>&lt;th&gt;</code>) an der angegebenen Position aus einer Tabellenzeile <code>&lt;tr&gt;</code>.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

HTMLTableRowElement.prototype.deleteCell(index)

Beschreibung

Die Methode deleteCell() der Schnittstelle HTMLTableRowElement entfernt eine einzelne Zelle aus einer Tabellenzeile. Welche Zelle entfernt wird, legt der Index fest. Er bezieht sich auf die Sammlung row.cells. Darin stehen sowohl <td>- als auch <th>-Elemente, und zwar in der Reihenfolge, in der sie im Dokument stehen.

Mit dem Sonderwert -1 wird die letzte Zelle der Zeile entfernt. Hat die Zeile keine Zellen, passiert bei -1 nichts und es wird kein Fehler ausgelöst. Das ist praktisch, wenn man in einer Schleife von hinten nach vorn Zellen entfernt, etwa um eine ganze Spalte aus einer Tabelle zu löschen.

Man nutzt deleteCell() vor allem bei dynamischen Tabellen: Spalten ein- und ausblenden, per Skript erzeugte Datenzellen wieder entfernen oder Tabellen umbauen. Das Gegenstück ist HTMLTableRowElement.insertCell(). Wer eine ganze Zeile entfernen will, verwendet HTMLTableElement.deleteRow() bzw. HTMLTableSectionElement.deleteRow().

Parameter

Name Typ Default Beschreibung
$index Pflicht number Position der zu entfernenden Zelle in row.cells, bei 0 beginnend. -1 steht für die letzte Zelle.

Rückgabewert

Typ
void
Beschreibung
Kein Rückgabewert (undefined). Die entfernte Zelle wird nicht zurückgegeben. Wenn du sie noch brauchst, hol sie dir vorher über row.cells[index].

Beispiele

Erste und letzte Zelle einer Zeile entfernen

// <table><tr id="zeile"><td>A</td><td>B</td><td>C</td><td>D</td></tr></table>
const row = document.getElementById('zeile');

row.deleteCell(0);   // entfernt "A"
row.deleteCell(-1);  // entfernt die letzte Zelle "D"

console.log([...row.cells].map((c) => c.textContent));
["B", "C"]

Eine ganze Spalte aus einer Tabelle löschen

// Entfernt die Spalte mit dem gegebenen Index aus allen Zeilen (thead, tbody, tfoot)
const deleteColumn = (table, colIndex) => {
  for (const row of table.rows) {
    if (colIndex < row.cells.length) {
      row.deleteCell(colIndex);
    }
  }
};

const table = document.querySelector('#preise');
deleteColumn(table, 2); // dritte Spalte entfernen
console.log(table.rows[0].cells.length);
Anzahl der verbleibenden Zellen der ersten Zeile, z. B. 3

Alle Zellen einer Zeile leeren und die Zeile neu befüllen

const row = document.querySelector('#status-zeile');

// -1 löst bei einer leeren Zeile keinen Fehler aus, darum ist die Schleife sicher
while (row.cells.length > 0) {
  row.deleteCell(-1);
}

['OK', '200 ms', new Date().toLocaleTimeString('de-DE')].forEach((text) => {
  row.insertCell().textContent = text;
});

console.log(row.cells.length);
3

Fehlerbehandlung bei ungültigem Index

const row = document.createElement('tr');
row.insertCell().textContent = 'einzige Zelle';

try {
  row.deleteCell(5);
} catch (err) {
  console.log(err.name);
}
IndexSizeError

// Wichtig · Fallstricke

  • Ungültiger Index: Ist index größer oder gleich der Zahl der Zellen oder kleiner als -1, wird eine DOMException vom Typ IndexSizeError ausgelöst. Eine Ausnahme ist -1 bei einer leeren Zeile: Dann passiert einfach nichts.
  • Index-Verschiebung: row.cells ist eine live HTMLCollection. Nach jedem Löschen rücken die folgenden Zellen um eine Position nach vorn. Wenn du mehrere Zellen per Index entfernst, geh deshalb von hinten nach vorn vor.
  • colspan/rowspan: Der Index zählt DOM-Zellen, keine sichtbaren Spalten. Wenn eine Tabelle verbundene Zellen enthält, passt die Position in cells nicht mehr zur sichtbaren Spalte. Ein naives Löschen einer Spalte bringt das Layout dann durcheinander.
  • Das Argument index ist laut Spezifikation Pflicht. Ältere Browser haben ein fehlendes Argument teils anders behandelt, gib es also immer an.
  • Alternativ kannst du eine Zelle auch mit cell.remove() entfernen. Das ist nützlich, wenn du schon eine Referenz auf das Element hast.
  • Kompatibilität: Die Methode gehört zu DOM Level 2 HTML und wird von allen Browsern unterstützt.