Homepage-Webhilfe Event-Banner

DOM und BOM

Das DOM und BOM sind Modelle, welche als Schnittstelle genutzt werden können, um auf das Dokument und den Browser zuzugreifen.

Das DOM (Document Object Model) erlaubt mittels einer Skript- oder Programmiersprache (z. B. JavaScript) den Zugriff auf das Dokument (z. B. HTML-Dokument). Das DOM kann als Schnittstelle angesehen werden, welches auf die HTML-Elemente (welche in JS als Objekte vorliegen) zugreifen kann und somit Elemente hinzufügen, verändern und sogar löschen kann. Diese Änderung gilt dabei immer nur für die aktuelle Sitzung, wird nicht gespeichert und geht somit beim Wechseln auf eine andere Seite verloren. Um auf das DOM zuzugreifen, benötigen wir das Objekt document. Bisher haben wir aus diesem Objekt immer nur die Funktion write() verwendet. Diese werden wir jedoch in Zukunft (mal abgesehen von Testskripten) eigentlich kaum mehr verwenden (evtl. nur noch in Verbindung mit einem PopUp-Fenster).

Das BOM (Browser Object Model) ist ein Modell zum Zugriff auf den Browser. Das BOM wird durch das Objekt window gekennzeichnet. Dieses Objekt besitzt unter anderem das Unterobjekt location (dazu später mehr). Auch document ist ein Unterobjekt von window, somit kann das DOM als Bestandteil des BOMs angesehen werden. Auf einige Eigenschaften und Funktionen des BOMs gehen wir in den Themen Event-Handling, Fenstersteuerung und Zeitsteuerung ein.

Übrigens: Die Funktionen alert(), confirm() und prompt() sind Funktionen des window-Objekts und können somit auch über window.alert(), window.confirm() und window.prompt() aufgerufen werden. Da window das Wurzelelement ist, kann es jedoch bei der Angabe weggelassen werden. Die Funktionen parseInt(), parseFloat() und isNaN() sind hingegen objektlose Funktionen. Ein Aufruf wie window.parseInt() wäre falsch, auch wenn dieser vermutlich in den meisten Browsern fehlerfrei ausgeführt werden würde.


Um Elemente von einem HTML-Dokument auszuwählen, gibt es 4 Funktionen: getElementById(), getElementsByClassName(), getElementsByName() und getElementsByTagName(). getElementById() gibt dabei das Element mit der angegeben ID (id-Attribut im HTML-Code) zurück. Alle 3 anderen Funktionen geben ein Objekt vom Typ NodeList zurück. Dabei handelt es sich um eine Art von Array. Der Zugriff kann ebenfalls über den Index und die eckigen Klammern erfolgen. Die Länge kann auch hier ebenfalls mit der length-Eigenschaft abgerufen werden. Mittels der Funktion getElementsByClassName() lassen sich alle Elemente selektieren, die den angegebenen Klassennamen haben. getElementsByName() selektiert alle Elemente mit dem angegebenen Namen als Wert des name-Attributs. getElementsByTagName() selektiert Elemente an Hand des Element- bzw. Tag-Namens. So selektiert getElementsByTagName("p") alle Paragraphen-Elemente.

Die mit Hilfe der 4 genannten Methoden selektierten Elemente liegen in JavaScript als Node-Objekt vor. Dieses Node-Objekt kann nun mittels Funktionen und Eigenschaften verändert werden. Den (HTML-)Inhalt eines Elements können wir mittels der Eigenschaft innerHTML abrufen oder verändern. Weitere Attribute können mittels dem Syntax element.attributName = attributWert oder über die Funktion setAttribute() (z. B. element.setAttribute(attributName, attributWert)) geändert werden.

<h1 id="titel"></h1>
<img src="/Bilder/Logo/Logo.jpg" width="100" alt="Logo" id="bild" />
document.getElementById("titel").innerHTML = "Homepage-Webhilfe";
document.getElementById("bild").title = "Das Logo von Homepage-Webhilfe!";
Vorschau

Wir können mittels des Node-Objekts auch auf dessen Unterelemente zugreifen. Hierfür dient die Eigenschaft childNodes, welche ein NodeList-Objekt zurückgibt. Über die Funktionen appendChild() und removeChild() können wir unserem Element weitere Unterelemente hinzufügen oder ein Unterelement entfernen.


Auf Style-Eigenschaften eines einzelnen Elements können wir ebenfalls mittels des Node-Objekts zugreifen. Hierfür müssen wir uns in das Objekt CSSStyleDeclaration begeben, welches sich hinter der Eigenschaft style des Node-Objekts befindet. Die Eigenschaften des CSSStyleDeclaration-Objekts, um CSS-Eigenschaften abzurufen und zu ändern, haben den gleichen Namen wie in CSS. Die Schreibweise erfolgt dabei jedoch immer ohne Bindestriche, sondern mit einer Abwandlung der „Camel Case“-Schreibweise. Ein Zugriff auf die CSS-Eigenschaft margin-top kann in JavaScript mittels der Eigenschaft marginTop erfolgen. Die Eigenschaft border-right-style wird hiermit zu borderRightStyle. Die Eigenschaft color verändert sich hingegen vom Namen nicht.

<div id="rechteck" style="width: 200px; height: 200px; background-color: red;"></div>
document.getElementById("rechteck").style.backgroundColor = "lime";
Vorschau

Formulare bzw. deren Elemente können an Stelle mit der Funktion getElementsByName() auch über eine einfachere Variante angesprochen werden. Hierzu nutzen wir das Unterobjekt forms des document-Objekts. Nun können wir unser Formular entweder mittels eines Index (document.forms[0], document.forms[1], ...) oder über den Namen (document.forms.meinFormular1, document.forms.meinFormular2) ansprechen. Auf Unterelemente des Formulars können wir nun ebenfalls mit Hilfe des Namens (name-Attribut) zugreifen. In den Elementen selbst stehen uns nun weitere Eigenschaften je nach Typ zur Verfügung: z. B. value (eingegebener oder aktueller Wert bzw. Wert des value-Attributs), checked (für Kontrollkästchen: true bedeutet Häkchen ist gesetzt), disabled (entspricht dem disabled-Attribut, true bedeutet Feld ist deaktiviert), selectedIndex (für Auswahllisten: Index der ausgewählten Eigenschaft von den Optionen oder -1) und options (für Auswahllisten: Liste mit allen Optionen der Auswahlliste).

<form name="formular">
    Jahr: <input type="number" min="2000" name="jahr" />
</form>
document.forms.formular.jahr.value = (new Date()).getFullYear();
Vorschau
Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen OK