Start · Sprachen · JavaScript · Referenz · HTMLTableCellElement.chOff

HTMLTableCellElement.chOff

Eigenschaft

Spiegelt das veraltete <code>charoff</code>-Attribut einer Tabellenzelle als String wider – hat in modernen Browsern keinerlei Auswirkung auf die Darstellung.

seit JavaScript Veraltet (HTML4-Erbe) – in allen Browsern vorhande deprecated seit ja Kategorie: webapi

Signatur

HTMLTableCellElement.chOff

Beschreibung

Die Eigenschaft chOff des Interfaces HTMLTableCellElement (also <td> und <th>) spiegelt das HTML-Attribut charoff wider. In HTML4 sollte damit festgelegt werden, um wie viele Zeichen der Zellinhalt gegenüber dem Ausrichtungszeichen verschoben wird. Dieses Zeichen wird über ch bzw. das Attribut char angegeben und wirkt nur zusammen mit align="char".

Kein aktueller Browser hat diese zeichenbasierte Ausrichtung je richtig umgesetzt. Die Eigenschaft ist deshalb eine reine Attribut-Spiegelung: Lesen liefert den Attributwert als String (oder "", wenn das Attribut fehlt), Schreiben setzt das Attribut charoff. Auf das Layout hat das keine Auswirkung.

Brauchbar ist chOff höchstens, wenn du Alt-Markup untersuchst oder aufräumst, zum Beispiel beim Umstellen alter HTML4-Tabellen auf CSS. Für neuen Code solltest du die Eigenschaft nicht verwenden.

Parameter

Name Typ Default Beschreibung
$value string "" Nur beim Schreiben: der neue Wert für das Attribut charoff, z. B. "2". Zahlen werden in Strings umgewandelt.

Rückgabewert

Typ
string
Beschreibung
Der aktuelle Wert des Attributs charoff oder ein leerer String, wenn das Attribut nicht gesetzt ist.

Beispiele

Wert lesen und setzen

const cell = document.createElement('td');
console.log(JSON.stringify(cell.chOff)); // Attribut fehlt

cell.chOff = 2; // Zahl wird zum String
console.log(cell.chOff);
console.log(cell.getAttribute('charoff'));
console.log(cell.outerHTML);
"" 2 2 <td charoff="2"></td>

Veraltete Attribute in alten Tabellen finden und entfernen

// Alle Zellen mit veralteten Ausrichtungsattributen bereinigen
const legacyCells = document.querySelectorAll('td[charoff], th[charoff], td[char], th[char]');

legacyCells.forEach((cell) => {
  console.log(`Entferne charoff="${cell.chOff}" char="${cell.ch}"`);
  cell.removeAttribute('charoff');
  cell.removeAttribute('char');
});

console.log(`${legacyCells.length} Zelle(n) bereinigt`);
Entferne charoff="2" char="." 1 Zelle(n) bereinigt

Moderner Ersatz: Dezimalzahlen per CSS ausrichten

// Statt ch/chOff: rechtsbündig mit gleich breiten Ziffern
const priceCells = document.querySelectorAll('td.preis');

priceCells.forEach((cell) => {
  cell.style.textAlign = 'right';
  cell.style.fontVariantNumeric = 'tabular-nums';
});

console.log(`${priceCells.length} Preiszellen ausgerichtet`);
3 Preiszellen ausgerichtet

// Wichtig · Fallstricke

  • Keine Wirkung: Das Setzen von chOff ändert die Darstellung in keinem Browser. Die Eigenschaft ändert nur das Attribut charoff.
  • Veraltet: charoff ist in HTML5 nicht mehr zulässig. Validatoren melden es als Fehler.
  • Immer ein String: Auch Zahlen werden als String gespeichert. Prüf- oder Validierungslogik gibt es nicht.
  • Kompatibilität: Die Eigenschaft ist aus Kompatibilitätsgründen in allen gängigen Browsern (Chrome, Firefox, Safari, Edge) vorhanden, aber überall ohne Wirkung.
  • Alternative: Für die Ausrichtung nimm CSS, etwa text-align: right zusammen mit font-variant-numeric: tabular-nums. Die geplante CSS-Syntax text-align: \".\" (Ausrichtung an einem Zeichen) wird bisher von keinem Browser unterstützt.