Tabellen sind ein mächtiges Darstellungs- und Präsentationsmittel.
Die möglichen DOM-Funktionalitäten zum Aufbau einer Tabelle sind bei den Browsern noch nicht alle vollständig verfügbar. Es ist aufwendig, das Tabellen-Objekt bei den Browsern (einheitlich nach den W3C- DOM-Vorgaben) vollständig zu implementieren. Es gibt z.Z. Browser-Besonderheiten. Nach W3C ist z.B. zum Hinterlegen von Attributen obj.setAttribute("class", wert) vorgesehen Der MS-Browser 6 braucht aber z.B. obj.setAttribute("className", wert).
| Methode | Bedeutung |
|---|---|
| createCaption() | Tabellenüberschrift-Element caption erzeugen |
| createTFoot() | Tabellenfuß-Element tfoot erzeugen |
| createTHead() | Tabellenkopf-Element thead erzeugen |
| deleteCaption() | Tabellenüberschrift-Element caption löschen |
| deleteTFoot() | Tabellenfuß-Element tfoot löschen |
| deleteTHead() | Tabellenkopf-Element thead löschen |
| deleteRow() | Tabellenzeile löschen |
| insertRow() | Tabellenzeile hinzufügen |
| Eigenschaften | Bedeutung |
|---|---|
| border | Rahmendicke der Tabelle |
| align | Ausrichtung der Tabelle |
| width | Breite der Tabelle |
| bgColor | Hintergrundfarbe der Tabelle |
| cellPadding | Abstand zwischen Zellenrand und Zellinhalt |
| cellPpacing | Abstand zwischen den Zellen untereinander |
| frame | Angabe, welche Rahmen der Tabelle sichtbar sein sollen |
| rows | (Lesen) des Array aller Tabellenzeilen |
| rules | Angabe, welche Gitternetzlinien innerhalb der Tabelle sichtbar sein sollen |
| tHead | Tabellenkopf-Element oder null |
| tBodies | (Lesen) Array aller tbody-Elemente der Tabelle |
| tFoot | Tabellenfuß-Element oder null |
| caption | Tabellenüberschrift-Element vorhanden oder nicht vorhanden |
| summary | Text, der Sehbehinderten die Tabelle im Fall von Sprachausgabe erläutert |
Mit document.getElementById(id)
kann auf html-Elemente einer Seite zugegriffen werden.
Der Identifizierer id wird seitenweit eindeutig gewählt.
In ein solches div-Element (mit id) kann
eine Tabelle eingefügt werden,
die Tabelle kann gelöscht, geändert
oder modifiziert neu aufgebaut werden.
Sind die Inhalte im arr[]-Array "matrixweise" enthalten,
und einige att[]-Attribute für die Tabellenelemente definiert,
so erstellt die Funktion
build_dom_table("id-tabelle-1", arr, att)
mit Hilfe der
DOM-Objekte die Tabelle.
<div id="id-tabelle-1"></div> <script type="text/javascript"> // arr[]=Inhalte der Tabellenelemente // att[]=Attribute der Tabellenelemente build_dom_table("id-tabelle-1", arr, att);// schreibt die Tabelle </script>
Die folgende Funktion build_dom_table(id, arr, att)
verwendet zum Objekt-Aufbau einer html-Tabelle die Dom-Funktionen
.createElement(...) .createTextNode(...) .appendChild(...) .setAttribute(...,...)
Das Tabellen-Objekt wird mit Hilfe von
.getElementById(...).
in der html-Seite positioniert.
Die Funktion
build_dom_table(id, arr, att)
bekommt vom arr-Array die Element-Daten und
und vom att-Array die Attribute:.
<script type="text/javascript">
function build_dom_table(id, arr, att) {
if(!arr) return; if(!arr[1]) return;
var has_th=(arr!=null)&&(arr[0]!=null)&&(arr[0].length>1);
var row = arr.length;
var col = arr[1].length;
var doc = document;
var ot_cont = doc.getElementById(id);
if(!ot_cont) {alert("ERR: id?"); return;}
if(ot_cont.childNodes.length > 0)
ot_cont.removeChild(ot_cont.childNodes[0]);
var clientPC = navigator.userAgent.toLowerCase();
var isIE =((clientPC.indexOf('msie') !=-1)
&&(clientPC.indexOf('opera')==-1));
var w3cName="class"; if(isIE) w3cName="className";
var ot_table = doc.createElement("table");
var ot_body = doc.createElement("tbody");
for (var j=0; j < row; j++) {
if(j==0)if(!has_th) continue;
var akt_row = doc.createElement("tr");
for (var i=0; i < col; i++) {
var td="td"; if(j==0) td="th";
var akt_cell = doc.createElement(td);
var cell_text="";
if(arr[j]&&arr[j][i]) cell_text=arr[j][i];
var akt_text = doc.createTextNode(cell_text);
akt_cell.appendChild(akt_text);
if(att&&att[j]&&att[j][i]) {
akt_cell.setAttribute(w3cName,att[j][i]);
}
akt_row.appendChild(akt_cell);
} ot_body.appendChild(akt_row);
}
ot_table.appendChild(ot_body);
if(att&&att[0]){
if(att[0]['class'])ot_table.setAttribute(w3cName,att[0]['class']);
if(att[0]['border'])ot_table.setAttribute('border',att[0]['border']);
if(att[0]['align'])ot_table.setAttribute('align',att[0]['align']);
if(att[0]['width'])ot_table.setAttribute('width',att[0]['width']);
}
ot_cont.appendChild(ot_table);
}
</script>
Die folgende Funktion
build_dom_table(id, arr, att)
bekommt vom arr-Array die Element-Daten und
und vom att-Array die Attribute.
Durch var arr = []; wird ein neuer Array angelegt. Die Tabellen-Zellen-Inhalte werden zeilenweise in arr hinterlegt. Der Aufruf build_dom_table("id-tabelle-1", arr); kommt ohne den att-Array aus, d.h. es werden keine Tabellen-Attribute gesetzt.
<div id="id-tabelle-1"></div>
<script type="text/javascript">
var arr = [];
arr[0] = []; // [0] = Table-Zeile th
arr[1] = []; // [1] = 1.Table-Zeile tr
arr[2] = []; // [2] = 2.Table-Zeile tr
// Tabellen-Elemente-Texte:
/*th:*/ arr[0][0]="00"; arr[0][1]="01"; arr[0][2]="02";
/*tr:*/ arr[1][0]="10"; arr[1][1]="11"; arr[1][2]="12";
/*tr:*/ arr[2][0]="20"; arr[2][1]="21"; arr[2][2]="22";
build_dom_table("id-tabelle-1", arr);
</script>
Existiert eine css-Table-Class 'table1' so wird der Bezeichner in att[0]['class'] = 'table1'; hinterlegt. Die Tabellenausrichtung kann mit att[0]['align'] auf 'center' oder 'right' oder 'left' (default) gesetzt werden. Die Tabellen-Breite ist hier att[0]['width'] = '62%'. Sollen besondere Elemente herausgehoben werden, so kann eine css-class angegeben werden, wie z.B. att[2][2] = 'roti';
// arr[] wie oben und zusätzlich Attribute und Style-Class:
var att = [];
att[0] = []; // Array für Tabelle-Style att[0][0]
att[0]['class'] = 'table1'; // css-Table-Class
att[0]['align'] = 'center'; // 'left', 'right', 'center'
att[0]['width'] = '62%'; // Tabellen-Breite
att[2] = []; // Array für Style-Klassen der Zeile 2
att[2][2] = 'roti'; // css-Klasse
build_dom_table("id_tabelle_2", arr, att);
Für die Text-Eingabe können in Tabellen-Elementen input-Tags verwendet werden, die in einem umschliessenden form-Tag sind.
GROBENTWURF (Prinzip) etwa
<form action='' id='MYID' onsubmit = 'return false;'>
<table><tr><td>
<input type='text' value="" size='2' maxlength='2' readonly='readonly' />
</td><td>
<input type='text' size='2' maxlength='2' value='' />
</td></tr><tr><td> ...
</td><td> ...
</td></tr></table>
</form>
Die input-Tags können die Inhalte bewahren.
Auf diese input-Inhalte (value, Werte)
kann etwa wie folgt zugegriffen werden.
Prinzip grob etwa:
this.form = document.getElementById(id);
this.inp = this.form.getElementsByTagName('input');
var k=3; // k-tes input-Element:
this.inp[k].value = '77';
var x = this.inp[k].value;
Bitte testen:
Berechne
Lösche
Ggf. bitte den Quelltext dieser Seite anschauen.