Basierend auf einem Forums-Beitrag vom 09.09.1998 von:
Christine Kuehnel, kuehnel@screenExa.net
Das folgende Beispiel demonstriert, wie Sie zweidimensionale Arrays mit JavaScript erzeugen können. Der erste Teil des JavaScripts initialisiert das zweidimensionale Array. Im zweiten Teil erfolgt die Ausgabe des so erzeugten Arrays. Lesen Sie hierzu auch den SELFHTML-Abschnitt Array: Allgemeines zur Verwendung
.
<html> <head><title>Zweidimensionales Array</title></head> <body> <script language="JavaScript"> <!-- a = new Array(4) for (i=0; i < 4; i++) { a[i] = new Array(4) for (j=0; j < 4; j++) {a[i][j] = "["+i+","+j+"]"} } for (i=0; i < 4; i++) { str = "Row "+i+":" for (j=0; j < 4; j++) {str += a[i][j]} document.write(str,"<p>") } //--> </script> </body> </html> |
Dieses Beispiel wurde der JavaScript-Dokumentation von Netscape entnommen und kann unter http://developer.netscape.com/docs/manuals/communicator/jsref/core1.htm nachgelesen werden.
![]() ![]() |
Basierend auf einem Forums-Beitrag vom 22.09.1998 von: Christine Kuehnel, kuehnel@screenExa.net
Welcher Aufruf ist der richtige?
eval() ist eine Funktion, die Zeichenketten zu "bewerten" versucht, und zwar im Sinne einer Rechenoperation. Das ist nur die halbe Wahrheit. eval() wandelt nämlich kontextabhängig um.
Zuerst einmal zur Verdeutlichung, die übliche Verfahrensweise sieht so aus:
ein_Bild = new Image(); ein_Bild.src = 'bild1.gif'; document['Bild'].src = ein_Bild.src; |
document['Bild'] ist hier ein Objekt mit der Eigenschaft src. ein_Bild ist auch ein Objekt, auch mit der Eigenschaft src. Die Zuweisung erfolgt also zwischen Objekten.
Zurück zum Anfang:
document[name] ist ebenfalls ein Image-Objekt, name dabei ein String (entspricht 'Bild' aus obigen Beispiel).
Dessen src-Eigenschaft soll, wie in meinem Beispiel, der src-Eigenschaft eines anderen Objektes gleichgesetzt werden. Das Objekt heißt name.
Die Variable name ist ein String. Gesucht wird aber nicht die src-Eigenschaft von dieser String-Variablen (Die gibt es nicht.), sondern die des Image-Objektes mit Namen name.
Dazu muss ein Objekt erzeugen werden. Dies geschieht mit eval().
Wenn in name "Bildchen" steht, dann macht in diesem Kontext
eval(name + .src) daraus Bildchen.src, d.h. ein Objekt mit Eigenschaft src.
Dies ist eine Möglichkeit mit einem String auszukommen, um verschiedene Image-Objekte ansprechen zu können.
Zur Illustration ein weiteres Beispiel:
<html> <head> <title>String + String oder eval()?</title> <script language="JavaScript"> <!-- function Ausgabe() { alert("Ich bin die Funktion Ausgabe()"); alert('typeof(Ausgabe) ist ' + typeof(Ausgabe)); return 1.0; } function ueberString(name) { n=name+"()"; alert(n); alert('n ist ' + n); alert('typeof(n) ist ' + typeof(n)); } function ueberEval(name) { n=eval(name+"()"); alert('n ist ' + n); alert('typeof(n) ist ' + typeof(n)); } //--> </script> </head> <body> <p> <a href="Javascript:Ausgabe()">die Funktion Ausgabe im Direktaufruf</a> </p> <p> <a href="Javascript:ueberString('Ausgabe')">Berechnung der Funktion Ausgabe über String</a> </p> <p> <a href="Javascript:ueberEval('Ausgabe')">Berechnung der Funktion Ausgabe über Eval</a></p> </body> </html> |
Die Funktion ueberEval() berechnet den Namen der Funktion Ausgabe(). Anschließend wandelt sie diesen in das Objekt Ausgabe() um und ruft die Funktion auf. Diese wird dann ausgeführt.
Die Funktion ueberString() berechnet ebenfalls den Namen der Funktion. Im Gegensatz zur Verwendung von eval() wird kein Objekt daraus gebildet und die Funktion Ausgabe() wird nicht ausgeführt.
Im Beispiel wird das reservierte Wort typeof verwendet, um den Typ des Elementes anzuzeigen.
![]() ![]() |
Basierend auf Forums-Beiträgen vom 16.09.1998 von:
Thomas Kienzle, Thomas_Kienzle@compuserve.com
Stefan Bach, sbach@t-online.de
Beim Extrahieren einer einzelnen Ziffer aus einer Zahl mittels substring erhalten Sie eine Fehlermeldung. Dies liegt daran, dass der Browser die Zahl als Zahl und nicht als String behandelt. Möchten Sie trotzdem dieses Verfahren verwenden, so müssen Sie erst eine "Typkonvertierung" durchführen. Dies erreichen Sie durch Zahl = Zahl + " ". Möchten Sie die Zahl wieder als Zahl interpretieren, genügt es Zahl=Zahl*1 anzugeben. Alternativ können Sie auch Str= Zahl + " " angeben. Zum Extrahieren verwenden Sie dann die Variable Str.
<script language="JavaScript"> <!-- function Konvertierung1(Zahl) { Zahl=Zahl+" "; alert(Zahl.substring(0,1)); Zahl=Zahl*1; } function Konvertierung2(Zahl) { Str=Zahl+" "; alert(Str.substring(0,1)); } //--> </script> |
![]() ![]() |
Basierend auf einem Forums-Beitrag vom 16.09.1998 von:
Timo Ballin, TBallinXXX@aol.com
Mittels JavaScript ist es möglich, Zeichenketten auf unzulässige Zeichen zu überprüfen. Dazu können die Methoden des Stringobjektes lastIndexOf() und charAt() verwendet werden.
<script language="JavaScript"> <!-- function check(eingabe) { var nur_das ="0123456789-[]/"; for (a = 0; a < eingabe.length; a++) {if (nur_das.indexOf(eingabe.charAt(a))<0 ) return false;} return true; } //--> </script> |
Die Funktion check(eingabe) überprüft, ob die Werte von eingabe nur die vorgegebenen Zeichen enthält. Diese sind in der Variablen nur_das abgelegt.
In dem Beispiel wird die Zeichenkette Zeichen für Zeichen daraufhin überprüft, ob dieses Zeichen in dem Bereich von nur_das vorkommt. Ist dies nicht der Fall, wird sofort abgebrochen und false zurückgegeben.
Entsprechen alle Zeichen dem Wertebereich von nur_das, wird der Wert true zurückgegeben. Die Rückgabewerte können dann entsprechend weiterverarbeitet werden.
![]() ![]() |
Basierend auf einem Forums-Beitrag vom 21.10.1998 von:
Stefan Muenz, muenz@csi.com
Die Methode Math.random() generiert Zufallszahlen. Sie können "zufällige" Zahlen aber auch aus dem Datum erzeugen.
<html> <head> <title>Zufallszahlen</title> <script language="JavaScript"> <!-- function Zufallszahl(von,bis) { Jetzt = new Date(); var Zeit = Jetzt.getTime(); var Zahl = 0; Zahl = Zeit % bis; alert(Zahl); return(Zahl); } //--> </script> </head> <body> <a href="JavaScript:Zufallszahl(0,99)">Zufallszahl zwischen 0 und 99</a> </body> </html> |
Mit new Date() wird ein neues Datumsobjekt mit dem Namen Zeit gebildet. Der Variablen Zeit wird mittels Jetzt.getTime() die seit dem 01.01.1970 verflossenen Zeit in Millisekunden zugewiesen. Durch Modulo-Division von Zeit durch die Endzahl ergibt sich ein Rest. Dieser Rest wird als Zufallszahl ausgegeben. Lesen Sie hierzu auch die SELFHTML-Abschnitte getTime() und
Berechnungsoperatoren.
![]() ![]() |
Basierend auf einem Forums-Beitrag vom 15.08.1998 von:
Christine Kuehnel, kuehnel@screenExa.net
Variable in einem anderen Framefenster können Sie mit
parent.FrameName.dieVariable
auslesen und weiterverarbeiten. Dabei sollten Sie berücksichtigen, dass diese Variablen nicht immer zur Verfügung stehen können.
<script language="JavaScript"> <!-- if (parent.Frame1) if (parent.Frame1.meine_Variable) alert("meine_Variable hat den Wert " + meine_Variable); else alert("meine_Variable ist nicht bekannt"); //--> </script> |
Mit if (parent.Frame1) und if (parent.Frame1.meine_Variable) wird die Existenz des Frames "Frame1" und der Variable abgefragt. Diese Sicherheitsabfrage verhindert Fehlermeldungen, wenn die Variable nicht zur Verfügung steht. Anschließend wird diese weiterverarbeitet.
Mit der gleichen Methode können Sie auch Variablen in anderen Frames verändern bzw. Funktionen ausführen.
Weiterführende Informationen finden Sie in der FAQ der Newsgroup de.comp.lang.javascript auf
http://irb-www.informatik.uni-dortmund.de/~sm/aw/js/faq/fenster/refer30.html.
![]() ![]() |
Basierend auf einem Forums-Beitrag vom 28.09.1998 von:
Marc, marc.ullrich@stud.tu-muenchen.de
Das Abspielen oder Stoppen eines Sounds mittels JavaScript wird durch das direkte Ansprechen von embed erzeugt. Der jeweilige Tag wird anhand seines Namens identifiziert.
document.embeds.Name.play() document.embeds.Name.stop()
Verwenden Sie mehrere Sounds auf einer Seite, können Sie diese auch mit embeds[index] ansprechen.
<html> <head> <title>Sounds</title> <script language="JavaScript"> <!-- function an(name) { document.embeds[name].play();} function aus(name) { document.embeds[name].stop();} //--> </script> </head> <body> <embed name="ueber" src="a.wav" loop=false autostart=false mastersound hidden=true></embed> <embed name="klick" src="b.mid" loop=false autostart=false mastersound hidden=true></embed> <a href="datei.htm" onMouseOver="an('ueber')" onMouseOut="aus('ueber')">Link</a> <a href="#" onClick="an('klick');return false">An</a> <a href="#" onClick="aus('klick');return false">Aus</a> </body> </html> |
Im Beispiel werden mittels onMouseOver, onMouseOut und onClick die Funktionen an() und aus() aufgerufen. Dabei wird jeweils der Name des embed-Tags übergeben.
Beide Methoden können Sie sowohl im Netscape Navigator ab Version 3 als auch im MS Internet Explorer ab Version 4 verwenden. Beachten Sie aber, dass deren Wirksamkeit stets von den vom Benutzer installierten Plugins abhängt.
![]() ![]() |
Basierend auf Forums-Beiträgen vom 09.03.1999 von:
Stefan Muenz, muenz@csi.com
Fredy, visual_fred@hotmail.com
Manchmal ist es notwendig, Zeichenfolgen in Wörtern oder ganze Zeichenketten zu ersetzen.
Sie können dazu reguläre Ausdrücke verwenden. Diese werden jedoch erst von neueren Browsern verstanden.
Durch Verwendung der Methode
substring() und der Eigenschaft length des
Stringobjektes ist das Suchen und Ersetzen ebenfalls zu realisieren.
<html> <head> <title>Suchen und Ersetzen</title> <script language="JavaScript"> <!-- function SucheErsetze(Text,Suche,Ersetze) { var Neutext = ""; var i = 0; while(i < Text.length) { if(Text.substring(i,i + Suche.length) == Suche) { Neutext = Neutext + Ersetze; i = i + Suche.length - 1; } else Neutext = Neutext + Text.substring(i,i + 1); i++; } return Neutext; } alert(SucheErsetze("schoen","oe","ö")); alert(SucheErsetze("14,234",",",".")); alert(SucheErsetze("März","ä","ae")); // --> </script> </head> <body> </body> </html> |
Im Beispiel wird die Buchstabenfolge oe im Wort schoen durch das ö ersetzt.
Mit dem Aufruf der Funktion SucheErsetze werden die Variablen Neutext und i initialisiert.
Neutext dient zur Aufnahme der bereits durchsuchten Zeichenkette und i gibt die aktuelle
Suchposition an.
Anschließend wird eine while-Schleife aufgerufen.
Innerhalb dieser Schleife wird schrittweise geprüft, ob sich die gesuchte Zeichenkette im Text befindet.
Der Ausdruck Text.substring(i,i + Suche.length) beinhaltet eine Zeichenkette, die genauso lang ist wie
der gesuchte Ausdruck. Stimmen beide Zeichenketten überein, wird der gesuchte Ausdruck ersetzt und an die Zeichenkette
Neutext angehängt. Ist dies nicht der Fall, wird die extrahierte Zeichenkette unverändert
an Neutext angefügt.
In beiden Fällen wird i dann um eins hochgezählt und die Suche wiederholt.
Mit Beendigung der Suche erhält die Funktion den Rückgabewert Neutext. Diese Zeichenkette wird dann ausgegeben.
Lesen Sie hierzu auch die SELFHTML-Abschnitte Funktion mit Rückgabewert und solche Funktion aufrufen und
substring().
![]() ![]() |
Basierend auf einem Forums-Beitrag vom 15.01.1999 von
Michael N., mnikolai@gw.ford.com
und auf einem Forums-Beitrag vom 14.01.1999 von:
Christine Kuehnel, kuehnel@screenExa.net
Ein immer wieder auftauchendes Problem ist die Übergabe von Werten an eine folgende Seite. Eine Möglichkeit ist
die Verwendung des Objektes location. Dieses Objekt ermöglicht ihnen den Zugriff auf die vollständige URL-Adresse der Seite.
Sie können mittels JavaScript an die URL der folgenden Seite Werte anhängen. Diese können von der aufgerufenen Seite
ausgelesen und weiterverarbeitet werden.
<html><head> <title>Wertübergabe - Werte senden</title> <script language="JavaScript"> <!-- function NaechsteSeite() { var newURL = "seite1.htm"; var ParameterEins = document.Formular.Eingabe1.value; var ParameterZwei = document.Formular.Eingabe2.value; newURL = newURL + "#" + escape(ParameterEins); newURL = newURL + "#" + escape(ParameterZwei); location.href = newURL; } //--> </script></head> <body> <form name="Formular"> Wert 1 eingeben: <input type="Text" name="Eingabe1"> <br> Wert 2 eingeben: <input type="Text" name="Eingabe2"> <input type="button" name="Senden" value="absenden" onClick="NaechsteSeite();return true"> </form> </body></html> <html><head> <title>Wertübergabe - Werte empfangen</title> <script language="JavaScript"> <!-- function WerteURLAus() { var URLInhalt = location.href; var ArrayVariable = URLInhalt.split("#"); document.Formular2.Ausgabe1.value=unescape(ArrayVariable[1]); document.Formular2.Ausgabe2.value=unescape(ArrayVariable[2]); } //--> </script></head> <body onLoad="WerteURLAus();return true;"> <form name="Formular2"> Wert 1 empfangen: <input type="Text" name="Ausgabe1"> <br> Wert 2 empfangen: <input type="Text" name="Ausgabe2"> </form> </body></html> |
Im Beispiel wird der Inhalt eines Formulars auf die nachfolgende Seite übertragen. Nach der Eingabe der Formulardaten wird nach Betätigung des Absendebuttons die Funktion NaechsteSeite() aufgerufen. Innerhalb dieser Funktion werden die Werte des Formulars ausgelesen und an die in der Variablen newURL gespeicherte Seitenadresse angefügt. Das Zeichen # fungiert hier als Trennzeichen. Mittels escape() werden eventuell eingegebene Sonderzeichen in URL-konforme Zeichen konvertiert. Anschließend wird die nächste Seite mit der generierten URL-Adresse aufgerufen.
Die Funktion WerteURLAus() liest mittels der Methode split() des Objektes string die einzelnen Werte aus und weist den Formularfeldern die
gewünschten Werte zu. Durch unescape() werden konvertierte Sonderzeichen wieder zurückgesetzt.
Das Beispiel können Sie im MS Internet Explorer ab der Version 4 und im Netscape Navigator ab der Version 3 einsetzen.
Der MS Internet Explorer Version 3 interpretiert die Methode split() nicht, jedoch das angedachte Übergabeprinzip.
Für Online-Anwendungen und dem Netscape Navigator empfiehlt sich das ? als Trennzeichen, da dadurch Kollisionen mit eventuell
vorhandenen Ankern vermieden werden. Einige Versionen des MS Internet Explorers interpretieren das Fragezeichen als Übergabezeichen in Offline-Anwendungen nicht oder nicht zufriedenstellend.
Sie können auch Werte von Variablen übergeben und neu setzen. Beachten Sie dabei, dass Sie nur Strings übergeben können.
Dies bedeutet, dass Sie gegebenenfalls diese Variablen konvertieren müssen.
Eine weitere Möglichkeit, Werte an nachfolgende Seiten zu übergeben, wird im Artikel
Javascript-Wertübergabe zwischen HTML-Dokumenten von Hatto von Hatzfeld auf SELFHTML aktuell erläutert.
![]() ![]() |
Basierend auf einem Forums-Beitrag vom 26.04.1999 von:
Michael N., mnikolai@gw.ford.com
und auf einem Forums-Beitrag vom 07.04.1999 von
Christine Kuehnel, kuene@screenExa.net
und auf einem Forums-Beitrag vom 02.09.1999 von
Calocybe, calocybe@geocities.com
Insbesondere im Bereich der Datumsberechnung werden häufig Zahlen mit führender Null benutzt.
Einfache Aufgaben wie alert(010*60) liefern scheinbar falsche Ergebnisse (hier 480 statt 600).
Des Rätsels Lösung für dieses, auf den ersten Blick kaum nachvollziehbare Verhalten liegt im Ursprung der Sprache JavaScript begründet.
Die Sprache JavaScript kommt aus dem Umfeld von UNIX und C. Unter UNIX ist aber das oktale Zahlensystem häufig die übliche Zahlendarstellung . Ein Zahl, die mit 0 beginnt, wird in JavaScript als Oktalzahl, ohne 0 als Dezimalzahl und beginnend mit 0x als Hexadezimalzahl interpretiert.
Diese Besonderheit gilt auch für die Funktion parseInt().
Die Funktion parseInt() besitzt jedoch einen optionalen Parameter radix. Dieser Parameter enthält die Basis des verwendeten Zahlensystems. Der Aufruf parseInt(string,radix) ermittelt aus dem String, der eine Zahl eines anderen Zahlensystems enthält, die dazugehörige Dezimalzahl. Die Funktion parseInt() kann damit gleichzeitig als Umrechner von Zahlen anderer Zahlensysteme in das dezimale Zahlensystem verwendet werden. So ergibt z.B. der Aufruf parseInt("11111",2) die Zahl 31.
<html><head><title>Führende Null und JavaScript</title></head> <body> <script language="JavaScript"> <!-- document.writeln('parseInt("022",10) ergibt: ' + parseInt("022",10) + '<br>'); document.writeln('parseInt("22") ergibt: ' + parseInt("22") + '<br>'); document.writeln('parseInt("022",8) ergibt: ' + parseInt("022",8) + '<br>'); document.writeln('parseInt("022") ergibt: ' + parseInt("022") + '<br>'); document.writeln('parseInt("0x22") ergibt: ' + parseInt("0x22") + '<br>'); document.writeln('parseInt("022",16) ergibt: ' + parseInt("022",16) + '<br>'); document.writeln('parseInt("022",3) ergibt: ' + parseInt("022",3) + '<br>'); document.writeln('parseInt("022",5) ergibt: ' + parseInt("022",5) + '<br>'); document.writeln('parseInt("11111",2) ergibt: ' + parseInt("11111",2) + '<br>'); document.writeln('parseInt("11211",2) ergibt: ' + parseInt("11211",2) + '<br>'); //--> </script> </body></html> |
Das dezimale Zahlensystem kennt die Ziffern 0 bis 9, das oktale Zahlensystem 0 bis 7 und das
hexadezimale System die Ziffern 0 bis 9 und A (=10), B (=11), C (=12), D (=13), E (=14) und F (=15).
Beachten Sie: befindet sich eine Ziffer im String, die im angegebenen Zahlenbereich unbekannt ist, wird der String nur bis zu dieser Ziffer interpretiert.
![]() | |
weiter:![]() |
![]() |
zurück:![]() |
![]() |
![]() ![]() ![]() |
© 2000 das Redaktionsteam