Signatur
Beschreibung
Die Eigenschaft ch des Interfaces HTMLTableRowElement spiegelt das veraltete HTML-Attribut char eines <tr>-Elements. Laut HTML 4 sollte dieses Attribut ein Zeichen festlegen, an dem sich der Zellinhalt ausrichtet, zum Beispiel am Dezimalpunkt bei Zahlenkolonnen. Das galt nur in Verbindung mit align="char".
Kein relevanter Browser hat diese Ausrichtung je umgesetzt. Die Eigenschaft liest und schreibt deshalb nur den Wert des Attributs, an der Darstellung ändert sich nichts. Ohne gesetztes Attribut liefert sie einen leeren String.
Sinnvoll ist ch heute nur noch in zwei Fällen: wenn man altes Markup ausliest oder migriert, und wenn man prüfen will, ob in bestehenden Dokumenten noch veraltete Attribute stecken. In neuem Code richtet man Zellinhalte mit CSS aus, zum Beispiel mit text-align, font-variant-numeric: tabular-nums oder mit Füllzeichen.
Rückgabewert
char. Ist das Attribut nicht gesetzt, ist der Wert ein leerer String "". Beim Schreiben wird das Attribut gesetzt, aber ohne sichtbare Wirkung.Beispiele
Wert des char-Attributs auslesen
// HTML: <table><tr id="summe" align="char" char=","><td>12,50</td></tr></table>
const zeile = document.getElementById('summe');
console.log(zeile.ch);
console.log(zeile.getAttribute('char'));
Setzen spiegelt nur das Attribut, die Darstellung bleibt gleich
const tabelle = document.createElement('table');
const zeile = tabelle.insertRow();
zeile.insertCell().textContent = '3.14';
console.log(JSON.stringify(zeile.ch)); // Standardwert
zeile.ch = '.';
console.log(zeile.outerHTML);
Migration: veraltete Attribute entfernen und durch CSS ersetzen
const altlastenBereinigen = (root = document) => {
const zeilen = root.querySelectorAll('tr[char]');
zeilen.forEach((tr) => {
console.warn(`Veraltetes char="${tr.ch}" entfernt`, tr);
tr.removeAttribute('char');
tr.removeAttribute('charoff');
// Moderner Ersatz: rechtsbündig mit gleich breiten Ziffern
tr.style.textAlign = 'right';
tr.style.fontVariantNumeric = 'tabular-nums';
});
return zeilen.length;
};
console.log(`${altlastenBereinigen()} Zeilen bereinigt`);
// Wichtig · Fallstricke
- Veraltet: Das Attribut
charist in HTML5 nicht mehr zulässig und wird vom Validator bemängelt. In neuem Code sollte manchnicht verwenden. - Keine Wirkung: Kein aktueller Browser richtet Zellen nach dem Wert von
chaus. Auchalign="char"wird ignoriert. Wer Zahlen am Dezimalzeichen ausrichten will, braucht CSS, etwatext-align: rightzusammen mitfont-variant-numeric: tabular-nums. - Namensunterschied: Die Eigenschaft heißt
ch, das Attribut dagegenchar. Das Gegenstück zucharoffistchOff. - Kompatibilität: Chrome, Firefox und Safari stellen die Eigenschaft weiterhin bereit. Sie kann jedoch künftig wegfallen, daher lieber nicht fest einplanen. Robuster ist
getAttribute('char'). - Der Wert wird nicht geprüft. Beliebige Strings, auch mit mehreren Zeichen, werden unverändert ins Attribut übernommen.