Document Object Model (DOM)

Das DOM (Document Object Model) beschreibt HTML-, XML- und SVG-Dokumente. Für Javascript ist das DOM der Standard für den Zugriff auf Tags, Attribute und Inhalte von HTML-Seiten, XML-Dokumenten und SVG-Grafiken. Ein HTML-Dokument besteht aus Knoten (in JavaScript Nodes genannt) in einer hierarchischen Struktur (Baumstruktur). Javascript kann Tags, Attribute oder Inhalt einfügen oder entfernen. Im Bild sehen sie eine einfache Baumstruktur eines HTML-Dokuments.

An der Spitze des DOM steht das document-Objekt, darunter befindet sich das Wurzelelement oder Root (<html>) genannt. Unterhalb des html-Elements liegen das <head> und das <body>-Element usw..

DOM

Was kann JavaScript

Mit dem Document Object Model von JavaScript kann man das gesamte HTML-Dokument dynamisch gestalten. Alle HTML-Elemente werden zu Objekten und können manipuliert werden:

  • JavaScript kann alle HTML-Elemente ändern
  • JavaScript kann alle Attribute ändern
  • JavaScript kann CSS ändern
  • JavaScript kann Tags und Attribute löschen
  • JavaScript kann Tags und Attribute hinzufügen
  • JavaScript kann auf Events reagieren
  • JavaScript kann neue Events hinzufügen

Wenn sie die JavaScript-Anweisunden dieser Seite testen möchten, kopieren sie den Inhalt in eine HTML-Datei innerhalb des body-Elements.

Eigenschaften und Methoden des DOM

Jedes HTML-Element hat Eigenschaften. Zu Beispiel besitzt jedes Element unterschiedliche Attribute die zu den DOM-Eigenschaften zählen.

<p id="myID">

Auch der Text innerhalb von Elementen zählt zu den Eigenschaften. Methoden wiederum führen eine Aktion aus wie zum Beispiel submit eines Formulars. Das DOM selber besitzt eine ganze Menge von Eigenschaften und Methoden, einige davon werden wir kennenlernen.

Die getElementBy-Methoden

Zu den wichtigsten Dingen in JavaScript zählt der Zugriff auf Elemente. Im DOM gibt es wichtige Methoden des document-Objekts, die einen direkten Zugriff auf einen Elementknoten erlauben:

  • getElementById('myID')
  • getElementsByName('myName')
  • getElementsByTagName('myTagName')
  • getElementsByClassName('myClass')

getElementById()

Die Methode getElementById findet das Element anhand der ID. Die Eigenschaft innerHTML ändert den Text des Elements, die Eigenschaften style.color ändern die Schriftfarbe. Beide Eigenschaften ändern einen Wert und sind somit set-Properties.

<div id="myID"></div>

<script>
document.getElementById("myID").innerHTML = "Hallo Welt!";
document.getElementById('myID').style.color = "blue";
</script>

Im nächsten Beispiel finden die Eigenschaften einen Wert und geben den Inhalt in einer alert-Box zurück (get-Properties).

<div id="myID" style="color: blue;">Hallo Welt!</div>

<script>
var x, y;
x = document.getElementById("myID").innerHTML;
y = document.getElementById('myID').style.color;
alert(x + " und " + y);
</script>

Das DOM Document Object

Das document-Objekt bezieht sich auf den Inhalt eines HTML-Dokuments. Dazu gehören u.A. alle Elemente (Tags), Attribute, Attributwerte, Text usw. also alles, was in einem Browser-Fenster angezeigt wird. In der Objekthierarchie von JavaScript liegt es unterhalb des window-Objekts (siehe Kapitel BOM), ist aber das oberste Element des Elementbaumes. Die Elemente eines HTML-Dokuments sind Unterobjekte des document-Objekts. Objekte und Unterobjekte können dabei eigene Eigenschaften und Methoden haben.

HTML-Elemente finden

Damit JavaScript HTML-Elemente bearbeiten kann, muss es erst gefunden werden. Hier finden sie die meist benutzten Methoden dafür:

Methode Beschreibung
getElementById('myID') findet Element mit dem id-Attribut
getElementsByName('myName') findet Elemente mit dem name-Attribut
getElementsByTagName('myTag') findet alle Elemente mit dem Tag-Namen
getElementsByClassName('myClass') findet Elemente mit dem class-Attribut

Während die Methode getElementById ein einzelnes Element-Object findet (die ID gibt es nur einmal), liefern alle anderen Methoden der obigen Tabelle eine Sammlung (Collection) von Elementen. Das Objekt aus dieser Collection wird als NodeList-Object bezeichnet.

getElementsByTagName('P')

Diese Methode findet alle Elemente anhand des gewünschten Tags (hier P, Groß- oder Kleinschreibung ist egal) und liefert eine Collection (NodeList) desselben Elements. Tatsächlich gibt getElementsByTagName() ein Objekt mit index- und length-Eigenschaft zurück.

<p>Adi</p>
<p>Gabi</p>
<p>Julia</p>

<script>
var x = document.getElementsByTagName("P").length;
alert( x + " gefundene Elemente");
</script> 

Das Beispiel findet alle p-Element im Dokument. Die Eigenschaft length ermittelt die Anzahl der gefundenen Elemente. Die getElementsByTagName -Methoden generiert ein NodeList-Object, die einzelnen Elemente können mit dem Index angesprochen werde, dazu weiter unten.

getElementsByName('myName')

Diese Methode findet Elemente mit dem Attribut name und liefert eine NodeList-Object mit denselben Namen. Tatsächlich gibt getElementsByName() ein Objekt mit index- und length-Eigenschaft zurück.
ACHTUNG: Das name-Attribut ist nur mehr bei wenigen Elementen erlaubt und kann nur dafür verwendet werden (z.B. input).

<form name="Formular">
<label>
<input type="checkbox" name="myName" value="Adi">Adi</label>
<label>
<input type="checkbox" name="myName" value="Gabi">Gabi</label>
<label>
<input type="checkbox" name="myName" value="Harald">Harald</label>
</form>

<script>
var x, y;
x = document.getElementsByName("myName").length;
alert( x + " gefundene Elemente");
</script>     

Die Methode document.getElementsByName("myName") findet alle Elemente mit dem name-Attribut und den Wert "myName". Die length-Eigenschaft liefert die Anzahl der gefundenen Elemente.

getElementsByClassName('myClass')

Diese Methode findet Elemente mit dem Attribut class und liefert eine NodeList-Object mit derselben Klasse. Tatsächlich gibt getElementsByClassName() ein Objekt mit index- und length-Eigenschaft zurück.

<p class="myClass">Adi</p>
<p class="myClass">Gabi</p>
<p class="myClass">Julia</p>

<script>
var x = document.getElementsByClassName("myClass").length;
alert( x + " gefundene Elemente");
</script>     

Die Methode document.getElementsByClassName("myClass") findet alle Elemente mit dem class-Attribut und den Wert "myClass". Die length-Eigenschaft liefert die Anzahl der gefundenen Elemente.

HTML-Objekte und -Sammlungen (Collections)

Das Document-Object bietet eine Vielzahl an Methoden um Elemente zu finden und bearbeiten. Manche Elemente wie z.B. body sind direkt ansprechbar.

  • document.documentElement / liefert den gesamten Inhalt des Dokuments inklusive des Wurzelelements
  • document.body / liefert den gesamten Inhalt des Dokuments exclusive des Wurzelelements
  • document.head / liefert den head des Dokuments
  • document.title / liefert den title des Dokuments
<script>
document.title = "My Homepage"; // ändert den Titel der Seite
document.body.style.backgroundColor = "yellow"; // setzt Hintergrund auf Gelb
</script> 

HTML-Collections sind Elemente die im Dokument mehrfach vorkommen können. HTML-Collections stehen für folgenede Elemente zur Verfügung:

  • document.forms / liefert eine Sammlung der form -Elemente
  • document.embeds / liefert eine Sammlung der embed -Elemente
  • document.images / liefert eine Sammlung der img -Elemente
  • document.links / liefert eine Sammlung der a und area -Elemente mit href-Attribut
  • document.scripts / liefert eine Sammlung der script -Elemente
var x = document.forms.length; // liefert die Anzahl der Formularelemente im Dokument

CSS Selektoren finden

JavaScript kann auch HTML-Elemente anhand von CSS-Selektoren finden.

  • document.querySelector() / findet das erste Vorkommen des definierten Selektors
  • document.querySelectorAll() / findet alle Vorkommen des definierten Selektors

Das folgende Beispiel findet das erste Vorkommen des Selektors p.myClass.

<div class="myClass">Hallo Welt!</div>
<p class="myClass">Adi</p>
<p class="myClass">Gabi</p>
<p class="myClass">Julia</p>

<script>
document.querySelector("p.myClass").style.backgroundColor = "red";
</script> 

Die querySelectorAll-Methode findet alle Elemente mit dem definierten CSS-Selektor (p.myClass) und liefert eine NodeList-Object.

<div class="myClass">Hallo Welt!</div>
<p class="myClass">Adi</p>
<p class="myClass">Gabi</p>
<p class="myClass">Julia</p>

<script>
var x = document.querySelectorAll("p.myClass").length; // liefert 3
alert(x);
</script> 

Das Beispiel findet alle p-Elemente mit der Klasse myClass .

HTML-Elemente und Attribute erzeugen

JavaScript kann auch HTML-Elemente, Attribut, Kommentare usw. erzeugen.

  • document.createElement()
  • document.createAttribute()
  • document.createComment()

Das Erzeugen dieser HTML-Nodes ist sehr einfach, mehr zu diesem Thema erfahren sie weiter unten!

var btn = document.createElement("BUTTON"); // erzeugt ein neues BUTTON-Element
var att = document.createAttribute("class"); // erzeugt ein neues CLASS-Attribut
var c = document.createComment("My personal comments"); // erzeugt einen neuen KOMMENTAR

document.write() und -writeln()

Beide Methoden machen im Prinzip dasselbe, sie schreiben HTML-Code in das Dokument. Wenn eine der Methoden nach dem Laden des Dokuments ausgeführt wird, ersetzt die Methode den gesamten HTML-Code mit dem neuen Inhalt! Der einzige Unterschied besteht darin, dass document.writeln() nach jedem Statement einen Zeilenumbruch einfügt (\n).

<script>
document.write("<h1>Hello World!</h1><p>Have a nice day!</p>");
</script>

<pre>
<script>
document.writeln("Hallo Welt");
document.writeln("Have a nice day!");
</script>
</pre>

document.open() und -close()

Die document.open-Methode öffnet ein Dokument zum Schreiben. Dabei wird kein neues Dokument geöffnet, sondern das aktuelle Dokument wird zum Schreiben freigegeben. document.write() oder document.writeln() schreiben Inhalt und document.close beendet den Schreibmodus.

<p>Dieses Element wird entfernt!</p>
<button onclick="myFunction()">Klick mich!</button>

<script>
function myFunction() {
document.open();
document.write("<h1>Hello World!</h1><p>Have a nice day!</p>");
document.close();
}
</script>

Das DOM NodeList Object

Die Methoden getElementsByName, getElementsByTagName, getElementsByClassName und querySelectorAll geben ein NodeList-Object zurück. NodeList-Objects sind Collections von Elementen und besitzen eine length-Eigenschaft und einen Index. Der Index erlaubt dem JavaScript-Programmierer explizit auf ein Element der Collection zuzugreifen. Die Syntax dafür ist Array-ähnlich, ist aber laut Spezifikation kein Array und kennt somit Array-Methoden nicht.
ACHTUNG: Auch hier beginnt der Zähler bei Null (0).

Text ändern mit innerHTML

Nachdem ein Element ansprechbar ist kann es bearbeitet werden. Im Beispiel wird das zweite p-Element gefunden und der Text wird geändert.

<p>Adi</p>
<p>Gabi</p>
<p>Julia</p>

<script>
document.getElementsByTagName("P")[1].innerHTML = "Hallo Welt!";
</script>     

NodeList mit einer for-Schleife auslesen

Das Beispiel findet alle Elemente der Klasse myClass, die Eigenschaft tagName gibt den Elementnamen zurück.

<div class="myClass">Adi</div>
<p class="myClass">Gabi</p>
<p class="myClass">Julia</p>

<script>
var x = document.getElementsByClassName("myClass");
var txt = "";
var i;
for (i = 0; i < x.length; i++) {
txt += x[i].tagName + "\n";
}
alert(txt);
</script>     

Element Attribut-Eigenschaften

Jedes Element kann Attribute haben, jedes Attribut ist eine JavaScript Element-Eigenschaft und kann ausgelesen oder geändert werden. Das Beispiel findet Elemente anhand des Namens, die mit einer Schleife durchlaufen werden. Die if-Anweisung prüft mit dem type-Attribut, ob es sich um eine Checkbox handelt. Das checked-Attribut setzt den Wert auf true (checked="checked").

<form name="Formular" action="#">
<input name="myName" type="text"><br>
<input name="myName" type="checkbox"><br>
<input name="myName" type="checkbox"><br>
</form>
<button onclick="myFunction()">Klick mich!</button>

<script>
function myFunction() {
var x = document.getElementsByName("myName");
for (var i = 0; i < x.length; i++) {
if (x[i].type == "checkbox") {
x[i].checked = true;
}}}
</script>     

DOM CSS-Selektoren

Die querySelectorAll-Methide findet Elemente anhand des CSS-Selektors und generiert ein NodeList-Object. Jeder Typ von CSS-Selektoren sind zulässig. so auch der Tag-Name. Mit dem Index wird daraus ein Element-Object und kann bearbeitet werden.

<p>Adi</p>
<p>Gabi</p>
<p>Julia</p>
<button onclick="myFunction()">Klick mich!</button>

<script>
function myFunction() {
var x = document.querySelectorAll("P");
x[0].style.color = "blue";
}
</script>     

Die nodelist.item()-Methode

Die item-Methode gibt ein Element der NodeList zurück. Ähnlich dem Index eines Elementes kann auch die item()-Methode verwendet werden.
Achtung: auch hier beginnt der Zähler bei Null.

var x = document.getElementsByTagName("P").item(0);
// oder
var x = document.getElementsByTagName("P")[0];

Diese beiden Codezeilen machen dasselbe und können alternativ eingesetzt werden.

DOM Collections

HTML-Collections sind Elemente die im Dokument mehrfach vorkommen können. HTML-Collections stehen für folgenede Elemente zur Verfügung:

Dom-Collections sind wie NodeList-Objects mit dem Index identifizierbar.

Die Images-Collection

Diese Collection repräsentiert alle img-Tags im Dokument. Das Beispiel findet das erste Vorkommen eines img-Elementes im HTML-Code und ändert das src-Attribut um ein anderes Bild zu Laden.

<img src="bild1.png"/>
<img src="bild2.png"/>
<img src="bild3.png"/>
<button onclick="myFunction()">Klick mich!</button>

<script>
function myFunction() {
var x = document.images[0];
x.src="bild4.png";
}
</script>     

Die Links-Collection

Diese Collection repräsentiert alle a- und area-Tags im Dokument mit einem href-Attribut. Das Beispiel findet das erste Vorkommen eines a-Elementes im HTML-Code und liefert den Linktext.

<a href="http://www.adiprinz.at">Adi Prinz</a><br>
<a href="http://www.orf.at">ORF</a><br>
<a href="http://www.krone.at">Kronen Zeitung</a><br>
<button onclick="myFunction()">Klick mich!</button>
<p id="myID"></p>

<script>
function myFunction() {
var x = document.links[0].href;
document.getElementById("myID").innerHTML = x;
}
</script>     

Die Forms-Collection

Diese Collection repräsentiert alle form-Tags im Dokument. Da in einem Formular weitere Elemente (z.B. input) vorkommen können, liefert das form-Element wiederum eine Collection mit allen vorhandenen Elementen. Das Beispiel findet das erste Vorkommen eines form-Elementes im HTML-Code und sucht mit der elements-Eigenschaft nach dem ersten Element des Formulars.

<form action="#">
<input name="a" type="text" value="Hallo Adi!"><br>
<input name="b" type="checkbox"><br>
<input name="c" type="checkbox"><br>
</form>
<br>
<form action="#">
<input name="d" type="text" value="Hallo Welt!"><br>
</form>
<button onclick="myFunction()">Klick mich!</button>

<script>
function myFunction() {
var x = document.forms[0];
x.elements[2].checked = true;
}
</script>     

Das DOM Element Object

Ein Object-Element repräsentiert einen HTML-Tag im DOM. Nachdem ein Element gefunden wurde, kann es mit Methoden und Eigenschaften des Object-Elements angesprochen werden. Gleichzeitig ist jedes Object-Element auch ein Elementknoten (Node) im HTML-Stammbaum. Diese Elementknoten haben meistens Kindknoten, Elternknoten und Geschwisterknoten die child, parent und siblings genannt werden. Dem Thema Node habe ich hier in ein eigenes Kapitel gewidmet. siehe: Nodes

Element-Eigenschaften

Einige Eigenschaften sind bereits vorgestellt worden. Hier ist eine Liste der oft gebrauchten Eigenschaften:

  • Element-Attribut (z.B. element.id)
  • element.innerHTML / Inhalt zwischen öffnenden und schließenden Element
  • element.textContent / Text zwischen öffnenden und schließenden Element inclusive Kindelemente
  • element.tagName / liefert den Tag-Namen (read-only)
  • element.isContentEditable / prüft ob ein Element editierbar ist (read-only)
  • element.className / liefert oder erzeugt den Namen der Klasse
  • element.classList / erzeugt ein DOMTokenList-Object der Klasse
  • element.attributes / erzeugt ein NamedNodeMap-Object der Attribute
  • element.style / erzeugt ein CSSStyleDeclaration-Object und repräsentiert das style-Attribut

Element-Atribut

Das Beispiel weist dem ersten p-Element im Dokument die ID "myID" zu:

document.getElementsByTagName("P")[0].id = "myID";

Viele Attribute der HTML-Tags stehen als Eigenschaft zur Verfügung (id, lang, style, dir, accesskey, title usw.). Auch Element spezifische Attribute wie Formularelemte können als Eigenschaft angesprochen werden. Im Beispiel wird für das erste Element der ersten form-Collection das Attribut value verwendet:

<form action="#">
<input name="myName" type="text" value="Hallo Welt!"><br>
</form>
<button onclick="myFunction()">Klick mich!</button>

<script>
function myFunction() {
var x = document.forms[0];
var y = x.elements[0].value;
alert(y);
}
</script>     

textContent und innerHTML

Während innerHTML den gesamten Inhalt eines Elements, inklusive HTML-Tags und Kindelemente liefert oder auch löscht, gibt textContent nur den Text des Elements bzw. der Kindelemente zurück. Die tagName-Eigenschaft liefert den Elementnamen.

<p id="myID">Adi <em>Prinz</em></p>
<button onclick="myFunction()">Klick mich!</button>

<script>
function myFunction() {
var x = document.getElementById("myID");
var y = x.innerHTML;
var z = x.textContent;
var t = x.tagName;
alert("innerHTML: " + y + " textContent: " + z + " tagName: " + t);
}
</script>     

isContentEditable

Ob ein Element editierbar ist kann mit der isContentEditable-Eigenschaft geprüft werden (true oder false). Das Attribut contentEditable kann true oder false sein, achten sie auf die Schreibweise mit Großbuchstaben dazwischen (Camel Case). Im Beispiel wird contentEditable deaktiviert.

<div class="myClass" contenteditable="true">Editierbar</div>
<button onclick="myFunction1()">Editierbar prüfen</button><br>
<button onclick="myFunction2()">Editierbar false!</button><br>

<script>
function myFunction1() {
var x = document.getElementsByClassName("myClass")[0];
var y = x.isContentEditable;
alert(y);
}
function myFunction2() {
document.getElementsByClassName("myClass")[0].contentEditable = false;
}
</script>  

className

Das class-Attribut nimmt eine Sonderstellung ein. Eine Anweisung wie:

element.class = "MyClass";

wird nich funktionieren. Dafür gibt es die Eigneschaft className.

element.className = "MyClass";

element.className liefert Lese- und Schreibzugriff (set/get) sollte eine Klasse existieren wird sie mit className überschrieben.

<p id="myID" class="myClass">Adi <em>Prinz</em></p>
<button onclick="myFunction()">Klick mich!</button>

<script>
function myFunction() {
var x = document.getElementById("myID").className;
document.getElementById("myID").innerHTML = "Klassenname in diesem Element: " + x;
}
</script>     

classList

Die classList-Eigenschaft liefert alle Klassennamen eines Elements und gibt ein DOMTokenList-Object zürück. Somit gibt es auch dafür die length-Eigenschaft. Mehr über das DOMTokenList-Object erfahren sie im nächsten Kapitel.

<p id="myID" class="firstClass secondClass thirdClass">Adi <em>Prinz</em></p>
<button onclick="myFunction()">Klick mich!</button>

<script>
function myFunction() {
var x = document.getElementById("myID").classList.length;
document.getElementById("myID").innerHTML = "Klassen in diesem Element: " + x;
}
</script>     

attributes

Element-Attribute sind auch mit der attributes-Eigenschaft ansprechbar. Dabei wird ein NamedNodeMap-Object generiert, welches alle Attribute eines Elements beinhaltet (Collection). Somit gibt es auch dafür die length-Eigenschaft und den Index. Mehr über das NamedNodeMap-Object erfahren sie im nächsten Kapitel.

<div id="myID" style="color: blue">
Hallo Welt!
</div>
<button onclick="myFunction()">Klick mich!</button>

<script>
function myFunction() {
var x = document.getElementById("myID").attributes.length;
alert(x);
}
</script>

style

Das sytle-Attribut wurdein diesem Script schon einige Mal verwendet. Auch style generiert ein Objekt mit dem Namen CSSStyleDeclaration. Somit gibt es auch dafür die length-Eigenschaft. Mehr über das CSSStyleDeclaration-Object erfahren sie im nächsten Kapitel.

<div id="myID" style="color: blue; padding-bottom:30px">
Hallo Welt!
</div>
<button onclick="myFunction()">Klick mich!</button>

<script>
function myFunction() {
var x = document.getElementById("myID").style.length;
alert(x);
}
</script>

Element-Methoden

Nachdem ein Element gefunden ist kann es mit Eigenschaften und Methoden bearbeitet werden. Einige Methoden wurden im Kapitel Document-Object behandelt und stehen auch als Element-Object zur Verfügung. Im Beispiel wird zuerst das zweite DIV-Element im Dokument gesucht, dann wird das erste P-Element innerhalb des DIV's angesprochen und der innerHTML geändert.

<div>Hallo Welt!</div>
<div>
<p>Adi Prinz!<p>
<p>Julia Prinz!<p>
<p>Harald Prinz!<p>
</div>
<button onclick="myFunction()">Klick mich!</button>

<script>
function myFunction() {
var x = document.getElementsByTagName("DIV")[1];
x.getElementsByTagName("P")[0].innerHTML = "Hallo Welt!";
}
</script>

Hier finden sie eine Liste der meist gebrauchten Element-Methoden:

  • element.getElementsByTagName() / findet Element anhand des Tag-Namen
  • element.getElementsByClassName() / findet Element anhand des Klassen-Namen
  • element.querySelectorAll() / findet Element anhand des Selektors
  • element.querySelector() / findet erstes Element anhand des Selektors
  • element.hasAttribute() / prüft ob ein Attribut existiert (true/false)
  • element.hasAttributes() / prüft ob irgendein Attribut existiert (true/false)
  • element.setAttribute() / setzt ein neues Attribut
  • element.getAttribute() / liefert den Attributwert
  • element.removeAttribute() / löscht ein Attribut
  • element.contains() / prüft ob ein Element existiert (true/false)

hasAttribute() und hasAttributes()

Ob ein Element Attribute besitzt kann geprüft werden. Mit der hasAttribute-Methode wird explizit geprüft, ob ein Attribut existiert. hasAttributes prüft ein Element, ob es irgendein Attribut gibt.

<p id="myID">Hallo Welt!</p>
<button id="myBtn" onclick="myFunction()">Klick mich!</button>

<script>
function myFunction() {
var x = document.getElementById("myBtn").hasAttribute("onclick");
var y = document.body.hasAttributes();
var z = document.getElementById("myID");
z.innerHTML = "x = " + x + " und " + "y = " + y; // true und false
}
</script>  

setAttribute()

Mit der setAttribute-Methode können einem Element Attribute und Attributwerte zugewiesen werden. Die setAttribute-Methode hat zwei Parameter, zuerst der Attributname und der Attributwert als zweites Argument.

<style>
.myClass {
color: red;
font-size:1.8em;
padding-bottom:20px;
}
</style>

<h1>Headline</h1>
<button onclick="myFunction()">Klick mich!</button>

<script>
function myFunction() {
var x = document.getElementsByTagName("H1")[0];
x.setAttribute("class", "myClass");
}
</script>  

Wenn setAttribute ein class-Attribut generiert kann als zweites Argument der Name der Klasse, oder das Style direkt geschrieben werden, wie das Beispiel zeigt. Dasselbe wird auch mit dem CSSStyleDeclaration-Object erreicht.

x.setAttribute("style", "color: red; font-size:1.8em; padding-bottom:20px;");

// oder

x.style.color = "red";
x.style.font-size:1.8em;
x.style.padding-bottom:20px;

getAttribute() und removeAttribute()

Die getAttribute-Methode liefert den Attributwert eines Attributs, mit removeAttribute können Attribute aus dem HTML entfernt werden.

<style>
.firstClass {
font-size:1.8em;
padding-bottom:20px;
}
.secondClass {
color: red;
}
</style>

<h1 class="firstClass secondClass">Headline</h1>
<button onclick="myFunction1()">Zeige Class Attribut!</button><br>
<button onclick="myFunction2()">Entferne Class Attribut!</button><br>

<script>
function myFunction1() {
var x = document.getElementsByTagName("H1")[0].getAttribute("class"); 
alert(x);
}
function myFunction2() {
document.getElementsByTagName("H1")[0].removeAttribute("class"); 
}
</script>  

contains()

Für die contains-Methode müssen sie mindestens zwei Elemente ansprechen können. contains prüft dann, ob ein Element in einem anderen vorkommt und liefert true oder false.

<p id="myP">Adi <em id="myEM">Prinz</em></p>
<button id="myBtn" onclick="myFunction()">Klick mich!</button>

<script>
function myFunction() {
var em = document.getElementById("myEM");
var p = document.getElementById("myP").contains(em);
alert(p);	
}
</script>  

DOM Objekte und Referenzen

Abschließend noch eine kleine Übersicht der Objekt auf dieser Seite: