Signatur
Beschreibung
Die Eigenschaft ch des Interfaces HTMLTableCellElement spiegelt das veraltete HTML-Attribut char von <td>- und <th>-Elementen wider. Ursprünglich sollte sie ein Zeichen festlegen, an dem der Inhalt einer Spalte ausgerichtet wird, z. B. das Dezimaltrennzeichen "." zusammen mit align="char". So hätten Zahlen am Komma untereinander stehen sollen.
Kein Browser hat diese Ausrichtung jemals umgesetzt. Die Eigenschaft lässt sich lesen und schreiben, und ein Schreibzugriff ändert auch das Attribut char im DOM. Auf die Darstellung hat das aber keinerlei Auswirkung. Heute ist sie nur noch interessant, wenn du alte HTML-Dokumente untersuchst oder bereinigst.
Für neuen Code solltest du ch nicht verwenden. Eine Ausrichtung an Dezimalstellen erreichst du mit CSS, z. B. mit text-align: right und font-variant-numeric: tabular-nums. Die CSS-Eigenschaft text-align: "." (Ausrichtung an einem Zeichen) ist spezifiziert, wird aber ebenfalls kaum unterstützt.
Rückgabewert
char. Fehlt das Attribut, ist es eine leere Zeichenkette "". Beim Schreiben wird das Attribut gesetzt.Beispiele
Attribut char auslesen
// HTML: <table><tr><td id="preis" align="char" char=",">12,50</td></tr></table>
const zelle = document.getElementById('preis');
console.log(zelle.ch);
console.log(zelle.getAttribute('char'));
Wert setzen – ohne sichtbare Wirkung
const zelle = document.querySelector('td');
console.log(JSON.stringify(zelle.ch)); // Attribut fehlt
zelle.ch = '.';
console.log(zelle.outerHTML);
// Die Darstellung der Zelle ändert sich nicht
Altes Markup bereinigen und durch CSS ersetzen
// Veraltete char-/align-Attribute entfernen und durch CSS ersetzen
document.querySelectorAll('td, th').forEach((zelle) => {
if (zelle.ch) {
zelle.removeAttribute('char');
zelle.removeAttribute('align');
zelle.style.textAlign = 'right';
zelle.style.fontVariantNumeric = 'tabular-nums';
}
});
console.log('Bereinigt');
// Wichtig · Fallstricke
- Veraltet: Die Eigenschaft wird in HTML als überholt geführt. Browser behalten sie nur aus Kompatibilitätsgründen, und sie könnte irgendwann entfallen.
- Keine Wirkung: Kein Browser richtet Zellinhalte am angegebenen Zeichen aus, auch nicht zusammen mit
align="char". - Verwechsle die Eigenschaft nicht mit der CSS-Längeneinheit
ch(Breite der Ziffer „0“). Die beiden haben nichts miteinander zu tun. - Das Attribut heißt im HTML
char, die DOM-Eigenschaft aberch. Genauso gehörtcharoffzuchOff. - Alternative: CSS mit
text-alignundfont-variant-numeric: tabular-nums.