SELFHTML/Navigationshilfen JavaScript/DOM Objektreferenz | |
elements |
|
elements: Allgemeines zur Verwendung Eigenschaften:
checked (Angekreuzt) Methoden:
blur() (Element verlassen) Unterobjekte: |
|
Mit dem Objekt elements
, das in der JavaScript-Objekthierarchie unterhalb des forms-Objekts liegt, haben Sie Zugriff auf Elemente eines Formulars.
Es stehen folgende Arten zur Verfügung, mit JavaScript ein bestimmtes Formularelement anzusprechen:
document.forms[#].elements[#].Eigenschaft document.forms[#].elements[#].Methode() document.forms[0].elements[0].value = "Unsinn"; document.forms[0].elements[0].blur();
document.Formularname.Elementname.Eigenschaft document.Formularname.Elementname.Methode() document.Testformular.Eingabe.value = "Unsinn"; document.Testformular.Eingabe.blur();
document.forms["Formularname"].elements["Elementname"].Eigenschaft document.forms["Formularname"].elements["Elementname"].Methode() document.forms["Testformular"].elements["Eingabe"].value = "Unsinn"; document.forms["Testformular"].elements["Eingabe"].blur();
Formularelemente können Sie auf folgende Arten ansprechen:
document.forms
an und dahinter in eckigen Klammern, das wie vielte Formular in der Datei Sie meinen. Beachten Sie, dass der Zähler bei 0 beginnt, d.h. das erste Formular sprechen Sie mit forms[0]
an, das zweite Formular mit forms[1]
usw. Beim Zählen gilt die Reihenfolge, in der die <form>
-Tags in der Datei notiert sind. Dann folgt die Angabe elements
. Auch dahinter notieren Sie wieder eine Indexnummer in eckigen Klammern. Auch dabei wird wieder bei 0 zu zählen begonnen, d.h. das erste Element innerhalb eines Formulars hat die Indexnummer 0, das zweite die Indexnummer 1 usw. Sie können zwischen den eckigen Klammern auch eine Number-Variable notieren, die die Indexnummer des Formulars bzw. des Formularelements enthält.document.FormularName.ElementName
den Namen des Formulars und des Elements an, den Sie bei der Definition des Formulars und des Elements in den entsprechenden HTML-Tags im Attribut name
angegeben haben.document.forms["Formularname"].elements["Elementname"]
den Namen des Formulars und des Elements als String an. Diese Notation wird insbesondere für den Zugriff auf Formularelemente benötigt, deren Namen Sonderzeichen enthalten, welche den Zugriff nach Schema 2 unmöglich machen. Sie können zwischen den eckigen Klammern auch eine String-Variable notieren, die den Formularnamen bzw. den Elementnamen enthält.document.Formularname.elements["Elementname"].value
Hinter dem, was hier als elements-Objekt bezeichnet wird, verbergen sich in Wirklichkeit mehrere, allerdings sehr ähnliche JavaScript-Objekte. So gibt es Objekte für Eingabefelder, Auswahllisten, verschiedene Arten von Buttons. Alle diese Objekte werden jedoch im so genannten "elements-Array" zusammengefasst. Alle diese Objekte werden auf die gleiche Art und Weise angesprochen. Sie unterscheiden sich lediglich in ihren Eigenschaften und Methoden. Bei den Eigenschaften und Methoden in diesem Abschnitt ist daher immer vermerkt, für welche Objekte sie gelten. Folgende Angaben werden dabei unterschieden (die Verweise führen zu den entsprechenden Beschreibungen in der HTML-Dokumentation):
Klick-Buttons Checkboxen Felder für Datei-Upload Versteckte Elemente Passwortfelder Radio-Buttons Abbrechen-Buttons Absendebuttons einzeilige Eingabefelder mehrzeilige Eingabefelder
Bei den Eigenschaften und Methoden des elements-Objekts wird jeweils angegeben, auf welche dieser Elementtypen die Eigenschaft bzw. Methode anwendbar ist.
Checkboxen und Radio-Buttons bilden normalerweise Gruppen mehrerer zusammengehöriger Elemente, die einen gleich Wert im name
-Attribut haben und sich nur das value
-Attribut unterscheiden. Solche Gruppen mit gleichen Namen bilden in JavaScript wiederum einen Array.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <form name="Formular" action="" method="get"> <input type="radio" name="Favoriten" value="Heino"> <input type="radio" name="Favoriten" value="Gildo"> <input type="radio" name="Favoriten" value="Marianne"> </form> <script type="text/javascript"> document.Formular.Favoriten[2].checked = true; </script> </body></html>
Im Beispiel ist ein Formular mit mehreren Radio-Buttons definiert. Die Gruppe zusammengehöriger Radio-Buttons hat den gleichen Namen. In JavaScript können Sie einzelne solcher Buttons ansprechen, indem Sie das Element (als Gruppe) ansprechen. Hinter dem Elementnamen notieren Sie dann in eckigen Klammern die Indexnummer des gewünschten Elements. Im Beispiel wird Favoriten[2]
angesprochen. Das ist das dritte Element der Gruppe.
Auswahllisten kommen hier nicht vor. Um mit JavaScript auf solche Listen zuzugreifen, steht das Unterobjekt options zur Verfügung.
Speichert, ob bzw. dass ein Radio- oder Checkbutton aktiviert ist oder nicht. Mögliche Werte sind true
bzw. 1
oder false
bzw. 0
.
Anwendbar auf: Klick-Buttons Checkboxen Radio-Buttons
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> function Weiter () { if (document.Testform.Art[0].checked == true) { window.location.href = "frmdatei.htm"; } else if (document.Testform.Art[1].checked == true) { window.location.href = "datei.htm"; } else { alert("Bitte eine Auswahl treffen"); } } </script> </head><body> <form name="Testform" action=""> <input type="radio" name="Art" value="mit"> mit Frames <input type="radio" name="Art" value="ohne"> ohne Frames <br><input type="button" value="Starten" onClick="Weiter()"> </form> </body></html>
Das Beispiel enthält ein Formular mit zwei Radio-Buttons. Der Anwender kann dabei auswählen, ob er die folgenden Seiten des Projekts mit Frames oder ohne Frames sehen will. Beim Klick auf den Button Starten
wird die Funktion Weiter()
aufgerufen. Diese Funktion prüft, ob einer der beiden Radio-Buttons aktiviert ist. Je nachdem, welcher von beiden aktiviert ist, wird eine unterschiedliche Datei aufgerufen ( location.href). Wenn keiner der beiden Radio-Buttons aktiviert ist, wird eine Fehlermeldung ausgegeben.
Sie können in Opera 5.12 unter Windows die Eigenschaft checked
für Radioboxen erst dann ändern, wenn der Aufbau der Seite abgeschlossen ist.
Speichert, ob bzw. dass ein Radio- oder Checkbutton per Voreinstellung aktiviert ist oder nicht. Mögliche Werte sind true
bzw. 1
oder false
bzw. 0
.
Anwendbar auf: Checkboxen Radio-Buttons
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> function Weiter () { if (document.Testform.Art[0].checked == true) { window.location.href = "frminhalt.htm"; } else { window.location.href = "inhalt.htm"; } } </script> </head><body> <form name="Testform" action=""> <input type="radio" name="Art" value="mit"> mit DHTML <input type="radio" name="Art" value="ohne"> ohne DHTML <br><input type="button" value="Starten" onClick="Weiter()"> </form> <script type="text/javascript"> dhtml = false; if (document.layers || document.all || document.getElementById) dhtml = true; if (dhtml == true && document.Testform.Art[0].defaultChecked == false) document.Testform.Art[0].checked = true; </script> </body></html>
Das Beispiel enthält ein Formular mit zwei Radio-Buttons. Der Anwender kann dabei auswählen, ob er die folgenden Seiten des Projekts mit Dynamischem HTML oder ohne sehen will. Beim Klick auf den Button Starten
wird die Funktion Weiter()
aufgerufen. Diese Funktion prüft, ob einer der beiden Radio-Buttons aktiviert ist. Je nachdem, welcher von beiden aktiviert ist, wird eine unterschiedliche Datei aufgerufen ( location.href).
Unterhalb des Formulars ist jedoch noch ein weiterer Script-Bereich notiert. Der Script-Bereich steht unterhalb, weil der darin enthaltene Code sofort ausgeführt und die Existenz des Formulars aber bereits voraussetzt. Es wird abgefragt, ob eines der für Dynamisches HTML typischen Objekte document.layers oder document.all bzw. die typische Methode document.getElementById verfügbar sind. Wenn ja, wird eine Variable dhtml
auf true
gesetzt. In einer weiteren Abfrage wird mit defaultChecked
überprüft, ob die Auswahlmöglichkeit, DHTML zu nutzen, im Formular als Vorauswahl aktiviert ist oder nicht. Wenn nicht, und wenn DHTML aber verfügbar ist (also wenn dhtml
auf true
gesetzt ist), wird die Auswahlmöglichkeit für DHTML nachträglich angekreuzt.
Opera 5.12 unter Windows interpretiert zwar die Eigenschaft defaultChecked
, führt das obige Beispiel jedoch nicht aus, da die Änderung des Zustandes der Radiobox vor dem Abschluss des Ladens der Seite erfolgt. Opera 5.02 kennt die Eigenschaft defaultChecked
noch nicht.
Speichert den voreingestellten Text eines Eingabefeldes.
Anwendbar auf: einzeilige Eingabefelder mehrzeilige Eingabefelder
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <form name="Testform" action=""> URI: <input type="text" size="40" name="uri" value="http://www.example.org/en/"> <input type="button" value="Gehe zu" onClick="window.location.href = document.Testform.uri.value"> </form> <script type="text/javascript"> if (navigator.language.indexOf("de") > -1) { document.Testform.url.defaultValue = "http://www.example.org/de/"; document.Testform.url.value = document.Testform.url.defaultValue; } </script> </body></html>
Das Beispiel enthält ein Formular mit einem Eingabefeld und einem Button. Das Eingabefeld wird mit http://www.example.org/en/
vorbelegt. Beim Klick auf den Button wird der Wert aus dem Eingabefeld an window.
location.href zugewiesen. Dadurch wird die entsprechende Adresse aufgerufen.
Bevor der Anwender jedoch überhaupt das Feld editieren kann, wird gleich beim Einlesen der Datei unterhalb des Formulars ein Script-Bereich notiert. Der Script-Bereich steht unterhalb, weil der darin enthaltene Code sofort ausgeführt und die Existenz des Formulars aber bereits voraussetzt. Es wird abgefragt, ob in der Ausweisung des Browsers ( navigator.language) der Bestandteil de
vorkommt ( indexOf()). Wenn ja, ist es ein deutschsprachiger Browser. In diesem Fall wird der defaultValue
des Eingabefeldes auf http://www.example.org/de/
geändert. Der geänderte Wert wird jedoch erst sichtbar, wenn er der Eigenschaft value zugewiesen wird. Dies geschieht in der zweiten Anweisung. Das Eingabefeld des Formulars ist dann abhängig von der Sprache des Browsers mit http://www.example.org/en/
oder http://www.example.org/de/
vorbelegt.
Opera 5.02 kennt die Eigenschaft defaultValue
noch nicht. Trotzdem interpretiert auch dieser Browser das Beispiel. Das liegt daran, dass mit der Zuweisung defaultValue = "http://www.example.org/de/"
der Wert des Eigenschaft manuell eingegeben wird. Sobald Sie jedoch ein JavaScript vom Originalwert abhängig machen möchten, müssen Sie berücksichtigen, dass diese Eigenschaft nicht existiert.
Speichert das Formular, innerhalb dessen sich das Element befindet. Hinter der Eigenschaft form
können Sie nochmals alle Eigenschaften und Methoden des forms-Objekts notieren.
Anwendbar auf: Klick-Buttons Checkboxen Felder für Datei-Upload Versteckte Elemente Passwortfelder Radio-Buttons Abbrechen-Buttons Absendebuttons einzeilige Eingabefelder mehrzeilige Eingabefelder
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <form name="Testform" action=""> <input type="button" name="derButton" value="Test" onClick="alert(document.Testform.derButton.form.name)"> </form> </body></html>
Das Beispiel enthält ein Formular mit einem Button. Beim Anklicken des Buttons wird der Name des Formulars ausgegeben.
Speichert die Anzahl der Elemente eines Formulares.
Speichert den Namen des Formularelements, wie er in HTML bei der Definition des Elements mit dem Attribut name
zugewiesen wurde.
Anwendbar auf: Klick-Buttons Checkboxen Felder für Datei-Upload Versteckte Elemente Passwortfelder Radio-Buttons Abbrechen-Buttons Absendebuttons einzeilige Eingabefelder mehrzeilige Eingabefelder
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <form name="Testform" action=""> <input type="button" name="derButton" value="Test" onClick="alert(document.Testform.derButton.name)"> </form> </body></html>
Das Beispiel enthält ein Formular mit einem Button. Beim Anklicken des Buttons wird der Name des Buttons ausgegeben.
Speichert den Elementtyp eines Formularelements.
Anwendbar auf: Klick-Buttons Checkboxen Felder für Datei-Upload Versteckte Elemente Passwortfelder Radio-Buttons Abbrechen-Buttons Absendebuttons einzeilige Eingabefelder mehrzeilige Eingabefelder
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <form name="Testform" action=""> <input type="radio" name="Auto" value="Porsche"> Porsche<br> <input type="radio" name="Auto" value="Mercedes"> Mercedes<br> Name: <input type="text" name="Name" size="30"><br> <input type="submit" name="Absendebutton" value="Absenden"> </form> <script type="text/javascript"> for (var i = 0; i < document.Testform.length; ++i) { document.write("<br>Elementname: " + document.forms[0].elements[i].name); document.write(", Elementtyp: " + document.forms[0].elements[i].type); } </script> </body></html>
Das Beispiel enthält ein Formular mit verschiedenen Elementen. Zu Testzwecken ist unterhalb des Formulars ein Script-Bereich notiert. Der Script-Bereich steht unterhalb, weil der darin enthaltene Code sofort ausgeführt und die Existenz des Formulars aber bereits voraussetzt. In dem Script wird für alle Elemente des Formulars mit document.write() der Elementname und der Elementtyp in die Datei geschrieben.
Speichert den Wert, der in einem Formularelement eingegeben wurde bzw. diesem zugewiesen ist.
Anwendbar auf: Klick-Buttons Checkboxen Felder für Datei-Upload Versteckte Elemente Passwortfelder Radio-Buttons Abbrechen-Buttons Absendebuttons einzeilige Eingabefelder mehrzeilige Eingabefelder
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <form name="Testform" action=""> Name: <input type="text" size="30" name="Name"> <input type="submit" name="Absendebutton" value="Absenden"> <input type="hidden" name="Browser" value=""> </form> <script type="text/javascript"> document.Testform.Browser.value = navigator.userAgent; document.write(document.Testform.Browser.value); </script> </body></html>
Das Beispiel enthält ein Formular, unter anderem mit einem versteckten Feld (<input type="hidden">
). Unterhalb des Formulars ist ein Script-Bereich notiert. Der Script-Bereich steht unterhalb, weil der darin enthaltene Code sofort ausgeführt und die Existenz des Formulars aber bereits voraussetzt. In dem Script wird dem Wert des versteckten Formularfeldes (document.Testform.Browser.value
) der Browser-Typ des Anwenders ( navigator.userAgent) zugewiesen. Dieser dynamisch erzeugte Formularinhalt wird mit übertragen, wenn der Anwender das Formular abschickt. In obigen Beispiel wird zur Demonstration der Wert des versteckten Feldes mit der Methode document.write() in das Dokument geschrieben.
Entfernt den Cursor bzw. den Focus von dem betreffenden Element. Erwartet keine Parameter.
Anwendbar auf: Klick-Buttons Checkboxen Felder für Datei-Upload Versteckte Elemente Passwortfelder Radio-Buttons Abbrechen-Buttons Absendebuttons einzeilige Eingabefelder mehrzeilige Eingabefelder
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <form name="Testform" action=""> <input type="text" name="Feld" size="30" onFocus="this.blur()"> </form> </body></html>
Das Beispiel enthält ein Formular mit einem Feld. Wenn der Anwender den Cursor in das Feld setzen will, wird der Cursor mit this.blur()
sofort wieder aus dem Feld entfernt. Durch das Schlüsselwort this wird der Bezug zum aktuellen Objekt hergestellt, in diesem Fall das Element Feld
, und die Methode auf das dieses Objekt angewendet. Eine solche Maßnahme kann beispielsweise sinnvoll sein, wenn Sie ein Feld ausschließlich als Ausgabefeld nutzen wollen, in dem der Anwender nichts editieren können soll.
Nicht immer wird der Cursor aus dem Eingabefeld entfernt. Eine Eingabe von Inhalt wird jedoch unterbunden.
Im Opera bis Version 6 "kennt" zwar die Methode blur()
, jedoch bleibt diese ohne Wirkung. Unter Opera 5.02 erzeugt die Anwendung der Methode einen JavaScript-Fehler.
Erzeugt einen automatischen Klick auf den betreffenden Button. Erwartet keine Parameter.
Anwendbar auf: Klick-Buttons Checkboxen Felder für Datei-Upload Abbrechen-Buttons Absendebuttons
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <form name="Testform" action=""> In welchem Jahr starb Goethe?<br> <input type="text" size="6" name="Todesjahr"> <input type="button" name="derButton" value="Weiter" onClick="Check()"> </form> <script type="text/javascript"> function Check () { if (document.Testform.Todesjahr.value != "1832") { window.location.href = "fehler.htm"; } else { window.location.href = "erfolg.htm"; } } window.setTimeout("document.Testform.derButton.click()", 10000); </script> </body></html>
Das Beispiel enthält ein Formular, in dem der Anwender das Todesjahr von Goethe eingeben soll. Wenn der Anwender nicht innerhalb von 10 Sekunden auf den Button Weiter
klickt, geschieht dies von alleine. Dafür sorgt die letzte Anweisung in dem Script, das unterhalb des Formulars notiert ist. Unterhalb des Formulars ist ein Script-Bereich notiert. Der Script-Bereich steht unterhalb, weil der darin enthaltene Code sofort ausgeführt und die Existenz des Formulars aber bereits voraussetzt. Mit document.Testform.derButton.click()
wird dort das Klicken das Buttons ohne Anwendereinwirkung bewerkstelligt. Der Aufruf der Methode ist in window.setTimeout() mit einer Verzögerungszeit von 10000 Millisekunden, also 10 Sekunden, eingebettet.
Beim Klick auf den Button, egal ob durch den Anwender oder automatisch, wird die Funktion Check()
aufgerufen. Diese Funktion überprüft, ob in dem Eingabefeld für das Todesjahr der korrekte Wert steht. Abhängig davon wird eine andere Seite aufgerufen ( location.href).
Setzt den Cursor bzw. den Focus auf das betreffende Element. Erwartet keine Parameter.
Anwendbar auf: Klick-Buttons Checkboxen Felder für Datei-Upload Versteckte Elemente Passwortfelder Radio-Buttons Abbrechen-Buttons Absendebuttons einzeilige Eingabefelder mehrzeilige Eingabefelder
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> function Check () { if (document.Testform.Todesjahr.value != "1832") { alert("Sie wissen es einfach nicht!"); document.Testform.Todesjahr.focus(); } else { alert("Bravo!"); window.location.href = "erfolg.htm"; } } </script> </head><body> <form name="Testform" action=""> In welchem Jahr starb Goethe?<br> <input type="text" size="6" name="Todesjahr"> <input type="button" value="Weiter" onClick="Check()"> </form> </body></html>
Das Beispiel enthält ein Formular, in dem der Anwender das Todesjahr von Goethe eingeben soll. Wenn der Anwender auf den Button Weiter
klickt, wird die Funktion Check()
aufgerufen. Diese Funktion überprüft, ob in dem Eingabefeld für das Todesjahr der korrekte Wert steht. Abhängig davon wird entweder mit alert() eine bissige Meldung ausgegeben, oder es wird "Bravo" ausgegeben und eine andere Seite aufgerufen ( location.href). Wenn der Anwender auf der Seite bleibt, weil die Eingabe fehlte oder falsch war, wird mit document.Testform.Todesjahr.focus()
auf das Eingabefeld für das Todesjahr positioniert.
Übergibt ein Ereignis an ein Element, das in der Lage ist, auf das Ereignis zu reagieren. Funktioniert genau so wie handleEvent() beim window-Objekt (nähere Informationen siehe dort).
Selektiert den gesamten in dem Feld enthaltenen Text. Erwartet keine Parameter.
Anwendbar auf: Passwortfelder einzeilige Eingabefelder mehrzeilige Eingabefelder
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> </head><body> <form name="Testform" action=""> Kopieren Sie den folgenden Code in die Adresszeile Ihres Browsers:<br> <input type="text" size="40" name="Code" value="javascript:top.close()"> </form> <script type="text/javascript"> document.Testform.Code.focus(); document.Testform.Code.select(); </script> </body></html>
Das Beispiel enthält ein Formular mit einem einzigen Feld. Das Feld wird mit dem Wert "javascript:top.close()" vorbelegt (wohlgemerkt: das ist keine JavaScript-Anweisung, sondern nur ein Feldinhalt). Unterhalb des Formulars ist ein Script-Bereich notiert. Der Script-Bereich steht unterhalb, weil der darin enthaltene Code sofort ausgeführt und die Existenz des Formulars aber bereits voraussetzt. Dort wird zunächst mit document.Testform.Code.focus()
auf das Formularfeld positioniert. Denn das Selektieren von Text ist nur möglich, wenn das Feld den Focus hat. Der vorbelegte Text des Formularfeldes wird dann mit document.Testform.Code.select()
selektiert.
options | |
forms | |
SELFHTML/Navigationshilfen JavaScript/DOM Objektreferenz |
© 2005 Impressum