Objekt testen ob existent ...
casi
- javascript
Hallo,
wie kann ich ein Objekt testen, ob es vorhanden ist oder nicht, OHNE jedesmal eine Script-Fehlermeldung zu erhalten, das es nicht existiert ... was ich ja gerade abfangen will...
Ähm, also es geht sich um Eingabefelder, wo mich einfach nur wissen will: Biste Da oder nicht.
Folgende Zeile exemplarisch:
if(this._displayForm.elements[this._fieldName]){...}
führt leider immer nur zu einer Fehlermeldung.
Die LLösung ist sicher einfach, aber offensichtlich nicht für mich (schnief)
Hi casi,
if(this._displayForm.elements[this._fieldName]){...}
führt leider immer nur zu einer Fehlermeldung.
Denn: das Objekt ist ja nicht da, und der Browser weiß nicht, was er tun soll...versuch's mal mit
if(this._displayForm.elements[this._fieldName]){...}
else { alert("Ding ist nicht da!"); }
Dann hat der Browser was zu tun, wenn es das Objekt nicht gibt, die Funktion kann ausgeführt werden --> alles prima, kein Fehler!
Grüße,
Utz
Hi Utz und aller anderen,
if(this._displayForm.elements[this._fieldName]){...}
else { alert("Ding ist nicht da!"); }
Die Script Fehlermeldung "this._displayForm.elements[this._fieldName] ist null oder kein Objekt" erscheint aber immer noch - (heul).
Ausserdem - sollte die Abfrage greifen wird der Block einfach nicht ausgeführt und danach weitergemacht, meiner Meinung nach ist ein else statement nicht notwendig. - Bei mir wär die Methode zuende und es folgt ein also return; hindter dem if-Block.
... ???
Hi casi,
Die Script Fehlermeldung "this._displayForm.elements[this._fieldName] ist null oder kein Objekt" erscheint aber immer noch - (heul).
*tröst* Na, dann versuchen wir jetzt mal der Reihe nach, das hinzukriegen. Diesmal: Variablen- bzw. Elementnamen sollten in JavaScript nicht mit Unterstrich beginnen. Änder das doch mal und gib Bescheid, ob sich da was tut.
Ausserdem - sollte die Abfrage greifen wird der Block einfach nicht ausgeführt und danach weitergemacht, meiner Meinung nach ist ein else statement nicht notwendig. - Bei mir wär die Methode zuende und es folgt ein also return; hindter dem if-Block.
Ja, soweit die Theorie. Hab aber schon die Erfahrung gemacht, dass manche Browser da nicht mitspielen. Wenn sie zu einer Funktion geschickt werden, wollen sie da auch was für sich finden - wenn nicht, gibt's Radau (function not defined). Sicherer ist es IMHO, entweder else zu notieren oder aber schon den Funktionsaufruf durch eine if-Abfrage abzufangen.
Aber bei Dir isses ja, wie Du im zweiten Posting rausgelassen hast, ein anderer Fehler.
Grüße,
Utz
Hi Utz, Antje und alle da draussen,
*tröst* Na, dann versuchen wir jetzt mal der Reihe nach, das hinzukriegen. Diesmal: Variablen- bzw. Elementnamen sollten in JavaScript nicht mit Unterstrich beginnen. Änder das doch mal und gib Bescheid, ob sich da was tut.
Hmmmm Utz, Es tut sich nix:
Unterstrich hin oder her bringt nix. Der Unterstrich resultiert daher, das ich interne Klassenvariablen mit einem Unterstrich kennzeichne. Da die ganze Klasse ansonsten hervorragend arbeitet, ist dieser Hinweis (leider, leider) auch nicht die Lösung.
Ich krieg halt nur Probleme, wenn das Objekt (in diesem Fall ein Eingabefeld) einfach nicht existiert!!
WIE KANN ICH DAS ABFRAGEN UND ABFANGEN .... *verzweifel*
Weitere Hüääälfe !!!
euer casi
WIE KANN ICH DAS ABFRAGEN UND ABFANGEN .... *verzweifel*
Weitere Hüääälfe !!!
Hi Casi,
was gefällt dir an meiner Lösung nicht. Die funzt doch.
Oder hast du die Vorgehensweise nicht verstanden?
Was ist dir nicht klar?
Bye
Timothy
Hi Timothy, Antje, Utz und alle anderen,
Doch, doch, Eure Lösungen gefallen mir gut, nur leider funzen Sie bei mir nicht so richtig.
if(!this.document.forms[0].elements["fname"]){
alert("nix is! mit Feld");
}
else{
alert( this.document.forms[0].elements["fname"].value);
}
funktioniert wunderbar in einer Testumgebung (Feld und Script auf der gleichen Seite. ABER: Ich übergebe die Forms an ein Objekt, und speichere sie in einer Objektvariablen, Feld und Script liegen nicht auf der gleichen Seite, also verkürzt so:
this._displayForm = top.app.doc.document.forms[0]
this._fieldName] = "fname"
Dann führt eine Abfrage mit:
if(this._displayForm.elements[this._fieldName]) ...
zu bekannter Fehlermeldung. Wie gesagt, wenn das Feld existiert ist alles kein Problem, und die Sache funktioniert (also auch die Verwendung von Unterstrichen etc...).
Übrigens, auch das verwenden von Variablen klappt in der Testumgebung:
displayForm = this.document.forms[0];
fieldName = "fname"
if(!this.displayForm.elements[fieldName]){
alert("nix is!");
}
else{
alert( this.displayForm.elements["fname"].value);
}
Wo liegt also der Hund begraben?????
casi
Hi Timothy, Antje, Utz und alle anderen:
Schubidu, ich habe die Lösung:
this._displayForm = top.app.doc.document.forms[0]
this._fieldName] = "fname"
Dann führt eine Abfrage mit:
if(eval(this._displayForm).elements[this._fieldName]) ...
zum gewünschten Ergebnis!
Warum es in meinem speziellen Fall ohne eval(...) nicht funktionierte
weis ich nicht.
Lust auf eine Erklärung? - dann hier posten!
euer casi (the real one)
Hallo Casi,
wer wird denn gleich weinen :-)
Die Script Fehlermeldung "this._displayForm.elements[this._fieldName] ist null oder kein Objekt" erscheint aber immer noch - (heul).
if (window.objektname) oder if (self.objektname) sollten weiterhelfen.
Viele Grüße
Antje
Hallo,
wie kann ich ein Objekt testen, ob es vorhanden ist
so geht es: a wird erfragt
function doit(){
if (typeof(a)=="undefined"){
alert("a ist nicht definiert");
}
else{
alert ("a ist definiert - gut so");
}
}
Gruß
Timothy