SELFHTML/Navigationshilfen JavaScript/DOM Objektreferenz | |
all |
|
all: Allgemeines zur Verwendung Eigenschaften:
className (Stylesheet-Klassenname eines Elements) Methoden: click() (Element anklicken) |
|
Das Objekt all
, das in der JavaScript-Objekthierarchie unterhalb des document-Objekts liegt, ist der Schlüssel zu Dynamischem HTML nach dem Ansatz des Internet Explorers ab Version 4.0. Mit Hilfe des all
-Objekts haben Sie Script-Zugriff auf alle einzelnen Elemente und Inhalte einer HTML-Datei. Die meisten Eigenschaften können Sie lesen und ändern. Methoden des all
-Objekts erlauben unter anderem das Einfügen oder Entfernen von HTML-Tags und von Angaben innerhalb eines HTML-Tags. Auf diese Weise ist der dynamische Zugriff auf alle Bestandteile einer Datei möglich.
Das all
-Objekt gehört nicht zum offiziellen JavaScript-Sprachstandard. Es wurde von Microsoft für den Internet Explorer 4.0 implementiert. Das all
-Objekt funktioniert zwar auch prima innerhalb von Script-Bereichen, die mit "JavaScript" ausgezeichnet sind, doch es ist bislang eigentlich nur Bestandteil von JScript, dem Microsoft-Derivat von JavaScript. Mit den neuen Browser-Generationen und dem Document Object Model (DOM) wird das all
-Objekt durch die HTML-Elementobjekte und das node-Objekt verdrängt. Es hat also keine Zukunft mehr und sollte allenfalls noch aus Gründen der Rückwärtskompatibilität eingesetzt werden.
Damit veraltete Scripte, die ohne Existenzabfrage das all
-Objekt verwenden lauffähig sind, haben die Browser Opera ab der Version 7 und Mozilla Firefox 1.0 (dieser nur im Quirks-Modus und auch nicht abfragbar) eine teilweise Unterstützung des all
-Objekts eingebaut. Deshalb funktionieren einige der folgenden Beispiele in diesen Browsern. Wenn das jeweilige Element jedoch mit DOM-Methoden angesprochen wird, z.B. mittels document.getElementById(), gelingt der Zugriff auf die Eigenschaften auch schon in älteren Opera-Versionen ab 5.12.
Nichtsdestoweniger sollten Sie all
nur verwenden, um den Internet Explorer 4.0 zu bedienen. Das all
-Objekt ist aus heutiger Sicht aus dem Grund interessant, weil einige der von Microsoft erfundenen Elementeigenschaften von vielen anderen Browsern übernommen wurden und sich großer Beliebtheit erfreuen, z.B. innerHTML. Diese können Sie auch zusammen mit DOM-Methoden verwenden.
Eine zusammenhängende Einführung in das Arbeiten mit dem all
-Objekt finden Sie im Abschnitt Das ältere DHTML-Modell von Microsoft.
Das all
-Objekt behandelt alle HTML-Tags, die in einer HTML-Datei notiert sind, als Kette von Elementen. Sie können jedes einzelne HTML-Tag in einer Datei ansprechen:
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Test</title> <script type="text/javascript"> function Aendern () { document.all.tags("h1")[0].innerText = "Anderer Inhalt"; } </script> </head> <body> <h1>eine Überschrift</h1> <a href="javascript:Aendern()">Aendern</a> </body></html>
Das Beispiel enthält eine Überschrift und einen Verweis. Beim Anklicken des Verweises wird die Funktion Aendern()
aufgerufen. Diese Funktion ändert den Text der Überschrift dynamisch in "Anderer Inhalt"
.
Um ein bestimmtes HTML-Tag anzusprechen, notieren Sie document.all.tags
. Dahinter folgt, in runden Klammern und in Anführungszeichen, der Name des HTML-Tags, auf das Sie zugreifen möchten. Im Beispiel soll auf ein <h1>
-Tag zugegriffen werden, also muss ("h1")
notiert werden. Damit haben Sie eine Art Zwischenobjekt, nämlich eine Kette aus allen <h1>
-Elementen der Datei. Nun müssen Sie noch angeben, welches Sie meinen. Im Beispiel gibt es zwar nur eine <h1>
-Überschrift, aber es könnte ja auch mehrere davon geben. Dazu notieren Sie in eckigen Klammern, das wie vielte HTML-Tag vom angegebenen Typ Sie meinen. Beachten Sie, dass der Zähler bei 0 beginnt, d.h. das erste Element sprechen Sie mit [0]
an, das zweite mit [1]
usw. Beim Zählen gilt die Reihenfolge, in der die HTML-Tags des ausgewählten Typs in der Datei notiert sind.
Nachdem Sie ein bestimmtes, eindeutiges HTML-Tag angesprochen haben, können Sie dahinter eine der Eigenschaften oder Methoden des all
-Objekts auf dieses HTML-Tag anwenden.
Sie können jedes HTML-Element in einem Script auch mit einem Namen ansprechen. Voraussetzung ist, dass das HTML-Element einen Namen durch die Attribute id
bzw. name
erhalten hat.
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Test</title> <script type="text/javascript"> function MachPzuH () { document.all.MeinElement.outerHTML = "<h1>" + document.all["MeinElement"].innerText + "<\/h1>"; } </script> </head> <body> <p id="MeinElement">Ein Element mit Text</p> <a href="javascript:MachPzuH()">Mach P zu H</a> </body></html>
Das Beispiel enthält einen Absatz und einen Verweis. Beim Anklicken des Verweises wird die Funktion MachPzuH()
aufgerufen. Diese Funktion verwandelt den Absatz dynamisch in eine Überschrift 1. Ordnung.
Um ein HTML-Element mit seinem Namen anzusprechen, müssen Sie im einleitenden Tag des Elements das Attribut id
notieren und dahinter einen Namen vergeben. Im Beispiel ist das der Name "MeinElement"
. Dann können Sie dieses Element mit document.all.ElementName
, im Beispiel also mit document.all.MeinElement
, ansprechen.
Alternativ können Sie, wie im zweiten Teil des Beispieles, das Element mit document.all["MeinElement"]
ansprechen. Über diese Art des Ansprechen eines Elementes können Sie auch Variablen übergeben. Dazu notieren Sie einfach den Variablennamen ohne Anführungszeichen anstatt eines festen Wertes z.B. document.all[Variablenname]
.
Voraussetzung ist jedoch, dass die Variable auch existiert.
Speichert die Stylesheet-Klasse, zu der ein Element gehört.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <style type="text/css"> p.normal { color:black } p.spezial { color:red } </style> </head><body> <p class="normal" id="derAbsatz">Text</p> <script type="text/javascript"> document.write("<br>Klasse davor: " + document.all.derAbsatz.className); document.all.derAbsatz.className = "spezial"; document.write("<br>Klasse danach: " + document.all.derAbsatz.className); </script> </body></html>
Im Beispiel werden im Dateikopf mit Hilfe von Stylesheets zwei Klassen für das HTML-Tag <p> definiert: eine Klasse normal
und eine Klasse spezial
. Im Dateikörper wird ein Absatz definiert, der zunächst die Klasse normal
zugewiesen bekommt. In einem Script wird der Klassenname des Absatzes zunächst mit document.write() zur Kontrolle in die Datei geschrieben. Dann wird dem Absatz die andere definierte Klasse zugewiesen. Dabei übernimmt der Absatz auch dynamisch alle Stylesheet-Eigenschaften der neuen Klasse. Anschließend wird der neue Klassenname zur Kontrolle auch noch mal in die Datei geschrieben.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Eigenschaft className
.
Speichert den Namen eines Datenfeldes, das zur Ausgabe eines Datensatzes gehört. Dies bezieht sich auf das Konzept der Datenanbindung. Zur Einführung in das Thema lesen Sie den Abschnitt über Datenanbindung (Microsoft).
<tr> <td><b>Vorname:</b></td> <td><span id="Test" datafld="vorname"> </span><input type="button" value="Test" onclick="alert(document.all.Test.dataFld)"> </td> </tr>
Das Beispiel stellt eine Tabellenzeile dar, in der ein Datenfeld ausgegeben wird (Die übrigen Befehle zur Datenanbindung fehlen hier). Zu Testzwecken ist ein Button eingefügt, bei dessen Anklicken der Name des Datenfeldes mit alert() ausgegeben wird. Es ist der Feldname, der im Attribut datafld
steht. Wenn Sie den Wert dynamisch ändern, können Sie in der gleichen Tabellenzelle beispielsweise ein anderes Feld ausgeben.
Speichert den Ausgabetyp eines Datenfeldes, das zur Ausgabe eines Datensatzes gehört. Dies bezieht sich auf das Konzept der Datenanbindung. Zur Einführung in das Thema lesen Sie den Abschnitt über Datenanbindung (Microsoft).
<tr> <td><b>Vorname:</b></td> <td><span id="Test" datafld="vorname" dataformatas="HTML"> </span><input type="button" value="Test" onclick="alert(document.all.Test.dataFormatAs)"> </td> </tr>
Das Beispiel stellt eine Tabellenzeile dar, in der ein Datenfeld ausgegeben wird (Die übrigen Befehle zur Datenanbindung fehlen hier). Zu Testzwecken ist ein Button eingefügt, bei dessen Anklicken der Ausgabetyp des Datenfeldes mit alert() angezeigt wird. Da dieser im Ausgabebereich mit "HTML" festgelegt wurde, wird dieser Wert ausgegeben.
Speichert, wie viele Datensätze gleichzeitig ausgegeben werden sollen. Dies bezieht sich auf das Konzept der Datenanbindung. Zur Einführung in das Thema lesen Sie den Abschnitt über Datenanbindung (Microsoft).
<input type="button" value="Test" onclick="document.all.Anzeigetabelle.dataPageSize = 5"> <table id="Anzeigetabelle" datasrc="#Adressen" datapagesize="1"> ...usw. Daten ... </table>
Das Beispiel deutet eine Tabelle an, die zur Ausgabe von Daten aus einer Datenanbindung gedacht ist (Die übrigen Befehle zur Datenanbindung fehlen hier). Da im einleitenden <table>
-Tag die Angabe datapagesize="1"
steht, wird in der Tabelle immer nur ein Datensatz gleichzeitig ausgegeben. Zu Testzwecken ist ein Button eingefügt, bei dessen Anklicken sich der Wert auf 5 ändert. Danach werden immer 5 Datensätze gleichzeitig angezeigt.
Speichert den Verweis auf das <object>
-Tag, in dem eine Datenanbindung definiert wird. Dies bezieht sich auf das Konzept der Datenanbindung. Zur Einführung in das Thema lesen Sie den Abschnitt über Datenanbindung (Microsoft).
<input type="button" value="Test" onclick="alert(document.all.Anzeigetabelle.dataSrc)"> <table id="Anzeigetabelle" datasrc="#Adressen" datapagesize="1"> ...usw. Daten ... </table>
Das Beispiel deutet eine Tabelle an, die zur Ausgabe von Daten aus einer Datenanbindung gedacht ist (Die übrigen Befehle zur Datenanbindung fehlen hier). Zu Testzwecken ist ein Button eingefügt, bei dessen Anklicken der Verweis auf die Datenquelle ausgegeben wird. Da dieser im Ausgabebereich mit "#Adressen"
festgelegt wurde, wird dieser Wert ausgegeben. Durch Ändern dieser Objekteigenschaft können Sie dynamisch die Datenquelle wechseln. Voraussetzung ist, dass für den neuen Verweis auf die Datenquelle ein entsprechendes <object>
-Tag für die Datenquelle definiert ist.
Speichert den Namen eines Elements.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <p id="meinAbsatz">Text</p> <script type="text/javascript"> document.write("<br>Name des Absatzes: " + document.all.meinAbsatz.id); </script> </body></html>
Im Beispiel wird ein Absatz definiert, der mit dem id
-Attribut den Namen "meinAbsatz"
zugewiesen bekommt. In einem Script wird der vergebene Name mit document.write() zur Kontrolle in die Datei geschrieben.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Eigenschaft id
.
In Opera funktioniert das Beispiel ab Version 5.12 bei Zugriff mittels document.getElementById().
Speichert den Inhalt eines HTML-Elements. Wenn Sie beim dynamischen Ändern des gespeicherten Inhalts HTML-Tags notieren, werden diese bei der Aktualisierung des Elementinhalts interpretiert.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> var Neu = "neuer <b>fetter<\/b> Text"; function Aendern () { document.all.meinAbsatz.innerHTML = Neu; } </script> </head><body> <p id="meinAbsatz">Text</p> <a href="javascript:Aendern()">Anderer Text</a> </body></html>
Das Beispiel enthält einen Textabsatz und einen Verweis. Beim Anklicken des Verweises wird die Funktion Aendern()
aufgerufen. Diese Funktion weist dem Absatz mit der id="meinAbsatz"
für die Eigenschaft innerHTML
den Wert der zuvor definierten Variablen Neu
zu. Der Inhalt des Absatzes ändert sich dann dynamisch und berücksichtigt dabei auch die HTML-Formatierung <b>
...</b>
beim neuen Inhalt des Elements.
Die Eigenschaft innerHTML
sollten Sie nicht direkt beim Einlesen der HTML-Datei anwenden, sondern immer erst abhängig von Aktionen wie Verweisklicks oder Button-Klicks oder mit einem setTimeout() von einigen Sekunden davor. Bei Anwendung direkt beim Einlesen der Datei meldet der Internet Explorer 4.0 einen Laufzeitfehler.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Eigenschaft innerHTML
.
Speichert den Textinhalt eines HTML-Elements. Sie können den Inhalt dynamisch ändern.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> var Neu = "neuer Text"; function Aendern () { document.all.meinAbsatz.innerText = Neu; } </script> </head><body> <p id="meinAbsatz">Text</p> <a href="javascript:Aendern()">Anderer Text</a> </body></html>
Das Beispiel enthält einen Textabsatz und einen Verweis. Beim Anklicken des Verweises wird die Funktion Aendern()
aufgerufen. Diese Funktion weist dem Absatz mit der id="meinAbsatz"
für die Eigenschaft innerText
den Wert der zuvor definierten Variablen Neu
zu. Der Inhalt des Absatzes ändert sich dann dynamisch.
Die Eigenschaft innerText
sollten Sie nicht direkt beim Einlesen der HTML-Datei anwenden, sondern immer erst abhängig von Aktionen wie Verweisklicks oder Button-Klicks oder mit einem setTimeout() von einigen Sekunden davor. Bei Anwendung direkt beim Einlesen der Datei meldet der Internet Explorer 4.0 einen Laufzeitfehler.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Eigenschaft innerText
.
Speichert, ob ein Element editierbar ist oder nicht. Wenn editierbar, hat die Eigenschaft den Wert true
, wenn nicht editierbar, hat sie den Wert false
. Derzeit sind nur bestimmte Formularelemente editierbar.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> function Ausgabe () { var Ausgabetext = ""; for (var i = 0; i < document.Testform.length; ++i) Ausgabetext = Ausgabetext + "<br>" + document.all.tags("input")[i].isTextEdit; document.all.Ausgabe.innerHTML = Ausgabetext; } </script> </head><body> <form name="Testform" action=""> <input type="text" size="30"><br> <input type="radio"><br> <input type="button" value="Test" onclick="Ausgabe()"> </form> <p id="Ausgabe"></p> </body></html>
Das Beispiel definiert ein Formular mit einigen verschiedenen Elementen. Das letzte Element ist ein Button. Beim Anklicken des Buttons wird die Funktion Ausgabe()
aufgerufen. Diese Funktion ermittelt in einer Schleife für jedes Element des Formulars, ob es editierbar ist oder nicht. Die Werte werden in einer Variablen Ausgabetext
gesammelt und HTML-formatiert. Am Ende wird dem Textabsatz, der in der Datei am Ende definiert ist, mit der Eigenschaft innerHTML der gespeicherte Wert von Ausgabetext
zugewiesen. Auf diese Weise steht hinterher in der Datei, welche der Formularfelder als editierbar gelten und welche nicht.
Speichert die Sprache eines HTML-Elements, wie sie im lang
-Attribut definierbar ist.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <p id="Absatz" lang="it">mi chiamo Stefan</p> <script type="text/javascript"> alert(document.all.Absatz.lang); </script> </body></html>
Im Beispiel wird ein Textabsatz definiert, dem mit dem lang
-Attribut die Sprache Italienisch (it
) zugewiesen wird. Unterhalb davon steht ein kleines JavaScript, das mit alert() den vergebenen Wert für die Sprache ausgibt.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Eigenschaft lang
.
In Opera funktioniert das Beispiel ab Version 5.12 bei Zugriff mittels document.getElementById().
Speichert, welche Script-Sprache in einem aktuellen Script verwendet wird.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script language="JScript" type="text/jscript"> alert(document.all.tags("script")[0].language); </script> </head><body> </body></html>
Das Beispiel gibt mit alert() aus, welche Script-Sprache die Ausgabe bewirkt hat. Das ist derjenige Wert, der im <script>
-Tag beim Attribut language
vergeben wurde. Da der Internet Explorer mehrere Script-Sprachen beherrscht, kann dieser Befehl in manchen Fällen für Gewissheit sorgen, etwa, wenn man ihn in eine if-Abfrage einbettet.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Eigenschaft language
.
Speichert die Anzahl HTML-Tags einer HTML-Datei. Tags, die aus einem einleitenden und einem abschließenden Tag bestehen, werden als ein Tag gezählt.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <p>Ein Absatz</p> <p>Noch ein Absatz</p> <script type="text/javascript"> alert("Diese Datei hat " + document.all.length + " HTML-Tags"); </script> </body></html>
Das Beispiel zeigt eine vollständige HTML-Datei mit Grundgerüst, zwei Textabsätzen und einem Script. Innerhalb des Script wird mit alert() ausgegeben, wie viele HTML-Tags die Datei enthält.
Speichert die Höhe eines Elements.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body id="DieseDatei"> <script type="text/javascript"> alert(document.all.DieseDatei.offsetHeight); </script> </body></html>
Das Beispiel gibt mit alert() die reale Höhe des <body>
-Tags der Datei aus. Das Ergebnis ist die tatsächliche Anzeigehöhe des Fensters, in dem das Dokument angezeigt wird. Die Eigenschaft lässt sich aber ebensogut auf HTML-Elemente innerhalb der angezeigten Inhalte anwenden.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Eigenschaft offsetHeight
.
Speichert den Abstand eines Elementes zum linken Rand des in der Eigenschaft offsetParent gespeicherten Offset-Elternelementes.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <div id="Bereich" style="padding:20px"> <p id="Absatz">Hier etwas Text</p> </div> <script type="text/javascript"> alert(document.all.Bereich.offsetLeft); alert(document.all.Absatz.offsetLeft); </script> </body></html>
Im Beispiel wird ein <div>
-Tag mit einem <p>
-Tag innerhalb davon definiert. Damit ein wenig innerer Abstand in die Sache kommt, wird beim <div>
-Tag mit Hilfe einer Stylesheet-Angabe ein Innenabstand definiert. Unterhalb dieser Befehle steht ein JavaScript, das die Abstände der beiden Elemente zum jeweiligen linken Rand des Offset-Elternelementes mit alert() ausgibt. Das Offset-Elternelement des Elementes Bereich
ist das Body-Element. Für dieses Element wird der Abstand zwischen Body und Bereich in der Eigenschaft offsetLeft
gespeichert. Das Offset-Elternelement des Elementes Absatz
ist das Element Bereich
selbst. In der Eigenschaft offsetLeft
ist jetzt der Abstand vom linken Rand vom Element Bereich
bis zum Element gespeichert.
Besitzt ein Element einen Innenabstand (padding
), so ist im Internet Explorer 5.0 die Eigenschaft offsetLeft
fehlerhaft, da der gesetzte Innenabstand in die Angabe mit einfließt. Das gilt auch für Padding-Angaben, die in einem inneren Element definiert sind.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Eigenschaft offsetLeft
.
In Opera funktioniert das Beispiel ab Version 5.12 bei Zugriff mittels document.getElementById().
Speichert dasjenige Elternelement eines Elements, von dessen Positionierung die Positionierung des Elements abhängt. offsetParent
ist dabei eine Art Zeiger auf das übergeordnete Element. Hinter der Eigenschaft lassen sich wiederum alle Eigenschaften und Methoden des all
-Objekts notieren. Diese gelten dann für das Element, auf das der Zeiger zeigt. Existiert kein Offset-Elternelement so hat die Eigenschaft offsetParent
den Wert null
.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <table><tr><td><div> <a><b id="Fett">Hier etwas Text</b></a> </div></td></tr></table> <script type="text/javascript"> var Eltern = document.all.Fett.offsetParent; while (Eltern) { document.write(Eltern.tagName + "<br>"); Eltern = Eltern.offsetParent; } </script> </body></html>
Im Beispiel ist eine Tabelle notiert, in deren einziger Zelle weitere Elemente enthalten sind. Das innerste Element ist das Element <b>..</b>
mit dem id-Namen Fett
. Im nachfolgenden JavaScript-Bereich wird der Variablen Eltern
das Offset-Elternelement des Elementes Fett
mit Hilfe von offsetParent
zugewiesen. Die nachfolgende while-Schleife gibt zu jedem Offset-Elternelement den Namen des Tags aus. Anschließend wird der Variablen Eltern
das Offset-Elternelement des gerade angesprochenen Elementes zugewiesen. Die Schleife bricht ab, wenn kein Offset-Elternelement mehr existiert. So, wie im Beispiel die all
-Objekteigenschaft tagName auf offsetParent
angewendet wird, lassen sich auch alle anderen Eigenschaften und Methoden des all
-Objekts auf das Element anwenden.
Im Unterschied zur Eigenschaft parentElement wird in der Eigenschaft offsetParent
immer dasjenige Element gespeichert, das die Position des Elements im Fenster festlegt.
Im Internet Explorer 4.0 ist das Offset-Elternelement von einer Tabellenzelle immer die Tabellenzeile. Ab dem Internet Explorer 5.0 wird als Offset-Elternelement einer Zelle die Tabelle selbst angesehen.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Eigenschaft offsetParent
.
In Opera funktioniert das Beispiel ab Version 5.12 bei Zugriff mittels document.getElementById().
Speichert den Abstand eines Elements zum oberen Rand des in der Eigenschaft offsetParent gespeicherten Offset-Elternelements.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <div id="Bereich" style="padding:20px"> <p id="Absatz">Hier etwas Text</p> </div> <script type="text/javascript"> alert(document.all.Bereich.offsetTop); alert(document.all.Absatz.offsetTop); </script> </body></html>
Im Beispiel wird ein <div>
-Tag mit einem <p>
-Tag innerhalb davon definiert. Damit ein wenig innerer Abstand in die Sache kommt, wird beim <div>
-Tag mit Hilfe einer Stylesheet-Angabe ein Innenabstand definiert. Unterhalb dieser Elemente ist ein JavaScript notiert, das mit alert() die Abstände der beiden Elemente zum oberen Rand des Offset-Elternelementes ausgibt.
Im Internet Explorer 5.0 wird in einem untergeordneten Element eine bestehende Padding-Angabe des übergeordneten Elementes nicht berücksichtigt, sofern sich kein Element vor dem abgefragten Element befindet.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Eigenschaft offsetTop
.
In Opera funktioniert das Beispiel ab Version 5.12 bei Zugriff mittels document.getElementById().
Speichert die Breite eines Elements.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body id="DieseDatei"> <script type="text/javascript"> alert(document.all.DieseDatei.offsetWidth); </script> </body></html>
Das Beispiel gibt mit alert() die reale Breite des <body>
-Tags der Datei aus. Das Ergebnis ist die tatsächliche Anzeigebreite des Fensters, in dem das Dokument angezeigt wird. Die Eigenschaft lässt sich aber ebensogut auf HTML-Elemente innerhalb der angezeigten Inhalte anwenden.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Eigenschaft offsetWidth
.
Speichert den Inhalt eines HTML-Tags plus das Anfangs- und End-Tag mit allen Angaben.
Anzeigebeispiel: So sieht's aus
<html> <head> <title>Test</title> </head> <body> <a id="Verweis" href="javascript:alert(this.Verweis.outerHTML)">Verweis</a> </body></html>
Das Beispiel enthält einen Verweis, der beim Anklicken seinen eigenen vollständigen HTML-Konstrukt mit alert() ausgibt.
Die Eigenschaft outerHTML
sollten Sie nicht direkt beim Einlesen der HTML-Datei anwenden, sondern immer erst abhängig von Aktionen wie Verweisklicks oder Button-Klicks oder mit einem setTimeout() von einigen Sekunden davor. Bei Anwendung direkt beim Einlesen der Datei meldet der Internet Explorer 4.0 einen Laufzeitfehler.
Speichert den gleichen Wert wie innerText, kann jedoch beim Ändern umgebende HTML-Tags entfernen und durch Text ersetzen.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> function Test () { document.all.fett.outerText = document.all.fett.innerText; } </script> </head><body> <p>Text mit <b id="fett" onclick="Test()">fetter Schrift</b></p> </body></html>
Das Beispiel enthält einen Text mit einem als fett markierten Teil. Beim Anklicken des fetten Teils wird die Funktion Test()
aufgerufen. Diese Funktion ersetzt den Wert von outerText
des fetten Elements durch den Wert von innerText
des gleichen Elements. Der Effekt ist, dass die Formatierung mit <b>
...</b>
verloren geht, weil outerText intern die umgebende HTML-Formatierung mit speichert, innerText aber nicht.
Die Eigenschaft outerText
sollten Sie nicht direkt beim Einlesen der HTML-Datei anwenden, sondern immer erst abhängig von Aktionen wie Verweisklicks oder Button-Klicks oder mit einem setTimeout() von einigen Sekunden davor. Bei Anwendung direkt beim Einlesen der Datei meldet der Internet Explorer 4.0 einen Laufzeitfehler.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Eigenschaft outerText
.
Speichert das Elternelement eines Elements. parentElement
ist dabei eine Art Zeiger auf das übergeordnete Element. Hinter der Eigenschaft lassen sich wiederum alle Eigenschaften und Methoden des all
-Objekts notieren. Diese gelten dann für das Element, auf das der Zeiger zeigt. Existiert kein Elternelement so hat die Eigenschaft parentElement
den Wert null.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <table><tr><td><div> <a><b id="Fett">Hier etwas Text</b></a> </div></td></tr></table> <script type="text/javascript"> var Eltern = document.all.Fett.parentElement; while (Eltern) { document.write(Eltern.tagName + "<br>"); Eltern = Eltern.parentElement; } </script> </body></html>
Im Beispiel ist eine Tabelle notiert, in deren einziger Zelle weitere Elemente enthalten sind. Das innerste Element ist das Element <b>..</b>
mit dem Namen Fett
. Im JavaScript-Bereich wird der Variablen Eltern
das Elternelement des Elementes Fett
mit der Eigenschaft parentElement
zugewiesen. Die nachfolgende while-Schleife gibt von jedem Elternelement den Namen des Tags aus. Anschließend wird der Variablen Eltern
das Elternelement des gerade angesprochenen Elementes zugewiesen. Die Schleife bricht ab, wenn kein Elternelement mehr existiert. So, wie im Beispiel die all
-Objekteigenschaft tagName auf parentElement
angewendet wird, lassen sich auch alle anderen Eigenschaften und Methoden des all
-Objekts auf das Element anwenden.
Im Unterschied zur Eigenschaft offsetParent wird in der Eigenschaft parentElement
immer das unmittelbar übergeordnete Element gespeichert.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Eigenschaft parentElement
.
Speichert das nächsthöhere Element in der Elementhierarchie, das Editieren von Text erlaubt.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> function Test () { alert(document.all.Verweis.parentTextEdit.tagName); } </script> </head><body> <a id="Verweis" href="javascript:Test()">Editieren?</a> </body></html>
Das Beispiel enthält einen Verweis. Beim Anklicken des Verweises wird die Funktion Test()
aufgerufen. Diese Funktion gibt mit alert() den Namen desjenigen HTML-Tags aus, das aus Sicht des Verweises das nächsthöhere Element darstellt, das Editieren von Text erlaubt. Im Beispiel ist dies das <body>
-Tag. Der Inhalt dieses Tags ist zwar nicht editierbar, aber es ist dasjenige nächsthöhere Tag, unterhalb dessen editierbare Elemente wie Formulareingabefelder notiert werden können.
Internet Explorer 5.0 Macintosh Edition interpretiert dieses Beispiel nicht.
Speichert, der wie vielte Datensatz angezeigt wird. Dies bezieht sich auf das Konzept der Datenanbindung. Zur Einführung in das Thema lesen Sie den Abschnitt über Datenanbindung (Microsoft).
<tr> <td><b>Vorname:</b></td> <td><span id="Test" datafld="vorname"> </span><input type="button" value="Test" onclick="alert(document.all.Test.recordNumber)"> </td> </tr>
Das Beispiel stellt eine Tabellenzeile dar, in der ein Datenfeld ausgegeben wird (Die übrigen Befehle zur Datenanbindung fehlen hier). Zu Testzwecken ist ein Button eingefügt, bei dessen Anklicken die Datensatznummer des aktuell angezeigten Datensatzes ausgegeben wird.
Speichert, das wievielte HTML-Element ein Element innerhalb einer HTML-Datei ist.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <p>Etwas Text mit<br>Zeilenumbruch</p> <p id="Absatz">HTML-Element, aber das wie vielte?</p> <a href="javascript:alert(document.all.Absatz.sourceIndex)">Test</a> </body></html>
Das Beispiel enthält verschiedene Elemente, unter anderem einen Absatz mit dem id-Namen "Absatz"
. Außerdem enthält das Beispiel einen Verweis. Beim Anklicken des Verweises wird mit alert() ausgegeben, das wie vielte Element der Absatz mit besagtem Namen innerhalb der HTML-Datei ist. Im Beispiel ist es das 7. Element, denn es werden alle einleitenden und alleinstehenden HTML-Tags der gesamten HTML-Datei gezählt.
Speichert den HTML-Tagnamen eines Elements.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body id="DieseDatei"> <a href="javascript:alert(document.all.DieseDatei.tagName)">Test</a> </body></html>
Das Beispiel enthält einen Verweis. Beim Anklicken des Verweises wird mit alert() der HTML-Tagname desjenigen Elements ausgegeben, das den id-Namen "DieseDatei"
hat. Im Beispiel ist es das <body>
-Tag.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Eigenschaft tagName
.
In Opera funktioniert das Beispiel ab Version 5.12 bei Zugriff mittels document.getElementById().
Speichert den Wert, der im Attribut title
eines Elements vergeben wurde. Dieses Attribut ist beim Internet Explorer bei allen sichtbaren Elementen erlaubt und bewirkt beim Darüberfahren mit der Maus, dass eine Art Tooltip (Hilfetext-Popup) zu dem Element angezeigt wird.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <p id="Absatz" title="Hilfe zum Text" onclick="alert(document.all.Absatz.title)">Text</p> </body></html>
Das Beispiel enthält einen Textabsatz. Dieser Textabsatz erhält mit dem Attribut title
einen Tooltip-Text. Beim Darüberfahren mit der Maus erscheint der Tooltip als kleines Popup-Fenster. Beim Anklicken des Absatzes wird der gleiche Text mit alert() ausgegeben.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Eigenschaft title
.
In Opera funktioniert das Beispiel ab Version 5.12 bei Zugriff mittels document.getElementById().
Bewirkt, dass ein Element angeklickt wird, so wie wenn der Anwender mit der Maus auf das Element klickt. Erwartet keine Parameter.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <a id="V1" href="javascript:alert('Verweis 1 geklickt')">Verweis 1</a><br> <a href="javascript:document.all.V1.click()">Verweis 2</a><br> </body></html>
Das Beispiel enthält zwei Verweise. Beim Klicken auf den ersten Verweis wird mit alert() die Meldung "Verweis 1 geklickt" ausgegeben. Beim Klicken auf den zweiten Verweis wird die Methode click()
auf den ersten Verweis angewendet. Dadurch wird dieser scriptgesteuert angeklickt, und es wird trotz Klickens auf den zweiten Verweis die Meldung "Verweis 1 geklickt" ausgegeben.
Ermittelt, ob ein Element ein bestimmtes anderes Element enthält. Erwartet als Parameter das Elementobjekt des gesuchten inneren Elements.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> function Test () { if (document.all.dieseDatei.contains(document.all.Absatz)) alert(document.all.Absatz.innerText); } </script> </head><body id="dieseDatei"> <p id="Absatz">Ein Text</p> <a href="javascript:Test()">Test</a> </body></html>
Das Beispiel enthält einen Verweis. Beim Anklicken des Verweises wird die Funktion Test()
aufgerufen. Diese Funktion überprüft, ob das <body>
-Tag, das den id-Namen dieseDatei
hat, ein Element enthält, das den id-Namen Absatz
hat. Wenn ja, wird der innere Text dieses Elements mit alert() ausgegeben.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Methode contains()
.
Ermittelt, ob ein Element in seinem HTML-Tag ein bestimmtes Attribut enthält oder nicht. Gibt den Wert zurück, den das Attribut hat, falls das Attribut gefunden wird, ansonsten die leere Zeichenkette ""
. Erwartet folgende Parameter:
1. Attribut = der Name des gesuchten Attributs im HTML-Tag.
2. Groß/Kleinschreibung = 1
übergeben, wenn bei dem Attribut Groß/Kleinschreibung unterschieden werden soll, oder 0
, wenn es egal ist, wie das Attribut geschrieben ist.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> function Test () { if (document.all.Absatz.getAttribute("align", 0) == "center") document.all.Absatz.setAttribute("align", "right", 0); } </script> </head><body> <p id="Absatz" align=center>Ein Text</p> <a href="javascript:Test()">Test</a> </body></html>
Das Beispiel enthält einen zentriert ausgerichteten Absatz mit dem id-Namen Absatz
und einen Verweis. Beim Anklicken des Verweises wird die Funktion Test()
aufgerufen. Diese Funktion ermittelt mit getAttribute()
, ob das Element mit dem Namen Absatz
ein Attribut align
enthält. Außerdem wird abgefragt, ob der Wert dieser Angabe gleich center
ist. Da dies im Beispiel der Fall ist, wird die abhängige Anweisung ausgeführt. Darin wird das Attribut align
mit Hilfe von setAttribute() dynamisch geändert, so dass der Absatz hinterher rechtsbündig ausgerichtet ist.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Methode getAttribute()
.
Fügt zusätzlichen HTML-Code vor oder oder nach einem Element ein. Erwartet folgende Parameter:
1. Position = Angabe, wo genau der HTML-Code hinzugefügt werden soll. Übergeben Sie BeforeBegin
, wenn der Code vor dem einleitenden HTML-Tag des Elements eingefügt werden soll, AfterBegin
, wenn der Code nach dem einleitenden Tag vor dem Inhalt eingefügt werden soll, BeforeEnd
, wenn der Code am Ende des Inhalts vor dem abschließenden Tag eingefügt werden soll, oder AfterEnd
, wenn der Code hinter dem abschließenden HTML-Tag eingefügt werden soll.
2. Code = Der HTML-Code, der eingefügt werden soll.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> var i = 0; function Nummerieren () { var Nummerierung = "<b>" + (i + 1) + ".<\/b> "; if (i < document.all.tags("p").length) document.all.tags("p")[i].insertAdjacentHTML("AfterBegin", Nummerierung); i = i + 1; } </script> </head><body> <p>Ein Absatz</p> <p>Ein anderer Absatz</p> <p>Noch ein Absatz</p> <p><a href="javascript:Nummerieren()">Nummerieren</a></p> </body></html>
Das Beispiel enthält drei Absätze und einen Verweis. Bei jedem Klick auf den Verweis wird der jeweils nächste Absatz dynamisch durchnummeriert. Dazu wird beim Klick auf den Verweis die Funktion Nummerieren()
aufgerufen. Diese Funktion verwaltet die beiden global definierten Variablen i
(Zähler für die Nummerierung) und Nummerierung
(HTML-formatierte Zeichenkette, die die Nummerierung hinzufügt). Solange der Zähler für die Nummerierung kleiner ist als die Anzahl der verfügbaren Absätze, wird im jeweils nächsten Absatz mit insertAdjacentHTML()
hinter dem einleitenden <p>
-Tag dynamisch der aktuelle Wert der Variablen Nummerierung
eingefügt.
Konqueror 3.4 beachtet das Leerzeichen nach dem schließenden b
-Tag nicht, die einfügten Nummern schließen daher direkt an den Text des Absatzes an ("1.Ein Absatz" statt "1. Ein Absatz"). Zur Abhilfe könnte ein anstelle eines normalen Leerzeichens ein erzwungenes Leerzeichen
verwendet werden.
Fügt zusätzlichen Text vor oder oder nach einem Element ein. Erwartet folgende Parameter:
1. Position = Angabe, wo genau der Text hinzugefügt werden soll. Übergeben Sie BeforeBegin
, wenn der Text vor dem einleitenden HTML-Tag des Elements eingefügt werden soll, AfterBegin
, wenn der Text nach dem einleitenden Tag vor dem Inhalt eingefügt werden soll, BeforeEnd
, wenn der Text am Ende des Inhalts vor dem abschließenden Tag eingefügt werden soll, oder AfterEnd
, wenn der Text hinter dem abschließenden HTML-Tag eingefügt werden soll.
2. Text = Der Text, der eingefügt werden soll.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> function Ergaenzen () { document.all.DynText.insertAdjacentText("BeforeEnd", " wird dynamisch!"); } </script> </head><body> <p id="DynText">HTML</p> <a href="javascript:Ergaenzen()">Ergaenzen</a> </body></html>
Das Beispiel enthält einen Absatz mit dem id-Namen DynText
, der nur das Wort "HTML" enthält. Beim Anklicken des Verweises unterhalb wird die Funktion Ergaenzen()
aufgerufen. Diese Funktion fügt vor dem abschließenden Tag den Text
" wird dynamisch" ein.
Entfernt ein bestimmtes Attribut aus einem bestimmten HTML-Tag. Erwartet folgende Parameter:
1. Attribut = der Name des gesuchte Attributs im HTML-Tag.
2. Groß/Kleinschreibung = 1
übergeben, wenn bei dem Attribut Groß/Kleinschreibung unterschieden werden soll, oder 0
, wenn es egal ist, wie das Attribut geschrieben ist.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> function Test () { document.all.Absatz.removeAttribute("align", 0); } </script> </head><body> <p id="Absatz" align="center">Ein Text</p> <a href="javascript:Test()">Test</a> </body></html>
Das Beispiel enthält einen zentriert ausgerichteten Absatz mit dem id-Namen Absatz
und einen Verweis. Beim Anklicken des Verweises wird die Funktion Test()
aufgerufen. Diese Funktion entfernt aus dem Absatz das Attribut align
, so dass der Absatz hinterher linksbündig ausgerichtet ist, weil das die Normaleinstellung für das <p>
-Tag ist.
Der Internet Explorer 5.0 Macintosh Edition interpretiert dieses Beispiel nicht. Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Methode removeAttribute()
.
Positioniert den Inhalt im Anzeigefenster des Browsers so, dass ein bestimmtes Element angezeigt wird. Erwartet einen Parameter. Übergeben Sie true
, wenn der Inhalt so positioniert werden soll, dass das Element oben im Anzeigefenster erscheint, oder false
, wenn das Element unten im Anzeigefenster platziert sein soll.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> function Test () { document.all.Absatz.scrollIntoView(true); } </script> </head><body> <p id="Absatz">Ein Text</p> <script type="text/javascript"> for (i = 1; i < 100; i++) document.write("<br>Zeile " + i); </script> <p><a href="javascript:Test()">Test</a></p> </body></html>
Das Beispiel enthält einen Textabsatz mit dem id-Namen Absatz
. Dann schreibt das Beispiel in einem Script-Bereich mit der write()-Methode 100 Zeilen in die Datei, damit die Datei zu Testzwecken schön lang ist. Unterhalb davon ist dann ein Verweis notiert. Beim Anklicken des Verweises wird die Funktion Test()
aufgerufen. Diese Funktion positioniert den Inhalt des Anzeigefensters neu, und zwar so, dass der Textabsatz Absatz
am oberen Fensterrand angezeigt wird.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari 2.0 unterstützt jedoch die Methode scrollIntoView()
.
Fügt in einem bestimmten HTML-Tag ein bestimmtes Attribut hinzu. Erwartet folgende Parameter:
1. Attribut = der Name des gewünschten Attributs.
2. Wert = die gewünschte Wertzuweisung für die Zusatzangabe.
3. Groß/Kleinschreibung = 1
übergeben, wenn bei dem Attribut Groß/Kleinschreibung unterschieden werden soll, oder 0
, wenn es egal ist, wie das Attribut geschrieben wird.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> function Test () { document.all.Absatz.setAttribute("align", "center", 0); } </script> </head><body> <p id="Absatz">Ein Text</p> <a href="javascript:Test()">Test</a> </body></html>
Das Beispiel enthält einen zentriert ausgerichteten Absatz mit dem id-Namen Absatz
und einen Verweis. Beim Anklicken des Verweises wird die Funktion Test()
aufgerufen. Diese Funktion fügt in dem Absatz das Attribut align
hinzu, und zwar mit der Wertzuweisung center
. Dadurch wird der Absatz hinterher zentriert ausgerichtet.
Das Beispiel kann im Safari nicht nachvollzogen werden, da dieser das Objekt document.all
nicht kennt. Safari unterstützt jedoch die Methode setAttribute()
.
style | |
node | |
SELFHTML/Navigationshilfen JavaScript/DOM Objektreferenz |
© 2005 Impressum