Formularfehler in JS: "document.Formular has no properties."
Hannes
- javascript
Ich will automatisch in ein Formular Benutzernamen und Kennwort aus den cookies eingetragen haben. Dazu habe ich eine HTM-Datei und ein externes Skript (siehe unten bzw. www.energiearchiv.de/versuch3.htm bzw. versuch4.htm).
Fuer sich freigestellt geht das Script jetzt (versuch3.htm, s.u.).
Sobald ich es jedoch in eine Seite versuche zu integrieren kommt sofort diese Fehlermeldung:
"document.Formular has no properties."
dazu die Zeilennummer, in der das erste Mal document.Formular... auftritt...
Mal klappts mal nicht. die ausgabe ist standardisiert, d.h. es sollte kein unterschied im <form...> tag sein.
ich hab jetzt 3 stunden den fehler gesucht und bins echt leid.
koennt Ihr mir helfen?
Hannes
anbei der Quelltext der drei betroffenen Dateien
--------------das Script-www.energiearchiv.de/scripte/javascript.js----------
function WertHolen()
{
var Wert = "";
if(document.cookie)
{
Wertstart = document.cookie.indexOf("=") + 1;
Wertende = document.cookie.indexOf(";");
if(Wertende == -1) Wertende = document.cookie.length;
Wert = document.cookie.substring(Wertstart,Wertende);
}
return Wert;
}
function cookieschreiben(Keinwert)
{
var Verfallszeit = 1000*60*60*24*30;
if (Keinwert == "0") {cookieinhalt="";}
else {cookieinhalt=document.Formular.Benutzername.value+", "+document.Formular.Passwort.value;}
WertSetzen("benutzerdaten",cookieinhalt,Verfallszeit);
}
function WertSetzen(Bezeichner, Wert, Verfall)
{
var jetzt = new Date();
var Auszeit = new Date(jetzt.getTime() + Verfall);
document.cookie = Bezeichner+"="+Wert+"; expires="+Auszeit.toGMTString()+";";
}
function cookieslesen()
{
var Anzahl = WertHolen();
var zugangsdaten = Anzahl.split(", ");
if (document.Formular.Passwort.value == undefined) {document.Formular.Passwort.value="";}
if (document.Formular.Benutzername.value == undefined) {document.Formular.Benutzername.value="";}
if (zugangsdaten[1] == undefined) {zugangsdaten[1]="";}
if (zugangsdaten[0] == undefined) {zugangsdaten[0]="";}
if (document.Formular.Passwort.value == "")
{
if (zugangsdaten[0] != "") {document.Formular.Passwort.value=zugangsdaten[0];}
}
if (document.Formular.Benutzername.value == "")
{
if (zugangsdaten[1] != "") {document.Formular.Benutzername.value=zugangsdaten[1];}
}
--------------www.energiearchiv.de/versuch4.htm-----das hier geht nicht -----
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>datenbankzugriff</TITLE>
<script language="JavaScript" src="/scripte/javascript.js"></script> <link rel=stylesheet type="text/css" href="/scripte/eaformat.css">
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#008000" BACKGROUND="../pictures/homepage/hintergrund.gif" onload="cookieslesen()">
<center>
<div style="position:absolute; top:20px; height:80px; text-align:center;">
<IMG SRC="../pictures/homepage/titel.gif"></div>
<div style="position:absolute; top:120px; text-align:center;">
<form action="/cgi-bin/ea.plx" method=get name="Formular">
<input type="hidden" name="datensatz" value="">
<input type="hidden" name="formular" value="">
<input type="hidden" name="schrittfolge" value="">
<input type="submit" name="action" value="abschicken!">
<input type="reset" value="zuruecksetzen">
<TABLE width="600" cellpadding="0" cellspacing="0" border="0">
<TR> <TD><p class="kleinschwarz">angemeldet als (Benutzername):<BR>
<INPUT type="text" size="25" name="Benutzername" value="unregistriert">
</P></TD>
<TD><p class="kleinschwarz">Passwort:<BR>
<INPUT type="password" size="16" name="Passwort" value="217.81.101.201"></P></TD>
<TD><p class="kleinschwarz"><a href="javascript:cookieschreiben('1')">Benutzerdaten auf diesem Computer speichern</a> / <a href="javascript:cookieschreiben('0')">gespeicherte Werte löschen</a></p></TD></TR>
</TABLE>
</form>
</div>
</center>
</BODY>
</HTML>
<!--ENDE-->.
--------------www.energiearchiv.de/versuch3.htm-----das hier geht------------
<HTML><HEAD><TITLE>TEST</TITLE>
<script language="JavaScript" src="/scripte/javascript.js"></script>
</HEAD>
<BODY onload="cookieslesen()">
<form action="/cgi-bin/ea.plx" method=get name="Formular">
angemeldet als (Benutzername):<BR>
<INPUT type="text" size="25" name="Benutzername" value=""><BR>
Passwort:<BR>
<INPUT type="password" size="16" name="Passwort" value=""><BR>
<input type="submit" name="action" value="abschicken!">
<input type="reset" value="zuruecksetzen">
</form>
<BR>
<a href="javascript:cookieschreiben('1')">Benutzerdaten auf diesem Computer speichern</a>
<BR>
<a href="javascript:cookieschreiben('0')">gespeicherte Werte löschen</a>
</BODY>
</HTML>
Hi,
"document.Formular has no properties."
da diese Fehlermeldung sinnvoll ist, benutzt Du Netscape.
anbei der Quelltext der drei betroffenen Dateien
Unterlasse es bitte in Zukunft, komplette Quellcodes zu posten. Nenne die URL oder reduziere den Code auf das relevante (nicht mehr als ca. 10-15 Zeilen), aber erspare uns meterlange Listings. Ich hätte Dir auch aufgrund obiger Fehlermeldung sagen können, daß Du schlichtweg das Netscape-4-DOM nicht beachtet hast, wonach positionierte <div>s Layer sind, die ein eigenes document-Objekt besitzen.
Mehr dazu im DHTML-Kapitel von SelfHTML.
Cheatah
Hi Cheatah,
da diese Fehlermeldung sinnvoll ist, benutzt Du Netscape.
naja - NUR in Netscape kam die Meldung - IE, iCab und Mozilla meckern nicht.
Mehr dazu im DHTML-Kapitel von SelfHTML.
o.k. das heisst also, das ich das Formular SO unter Netscape nicht ansprechen kann, oder? Wie mache ich das dann am geschicktesten, wenn ich das Script zwar universell nutzen will (externe Datei), aber die zu Verändernden Objekte ("document.Formular.Benutzername.value" nicht immer im selben <div>- Bereich stehen? Muss ich dann eigene Layer dafuer zusammenstellen? Und WIE SPRECHE ICH DIESE LAYER mit allen anderen Browsern an?
Au weia. ich hab so viel Geschiss damit, zu versuchen, dass es auf vielen Browsern läuft, das geht auf keine Kuhhaut...
Unterlasse es bitte in Zukunft, komplette Quellcodes zu posten. Nenne die URL oder reduziere den Code auf das relevante
Is ja gut... ich hatte den Quellcode schon bestmoeglich gestaucht - schliesslich ist das normal eine Seite mit Inhalt. Und wenn ich wuesste WAS das relevante ist, haette ich hier ja nicht Fragen brauchen. Die <div>s bspw. waeren dann rausgeflogen (ohne dass ich gemerkt haette, das SIE die verursacher sind)
Hi,
da diese Fehlermeldung sinnvoll ist, benutzt Du Netscape.
naja - NUR in Netscape kam die Meldung - IE, iCab und Mozilla meckern nicht.
deren DOM hast Du ja auch beachtet :-)
Mehr dazu im DHTML-Kapitel von SelfHTML.
o.k. das heisst also, das ich das Formular SO unter Netscape nicht ansprechen kann, oder?
SO nicht, aber so. Ansprechen kannst Du es auf jeden Fall.
Wie mache ich das dann am geschicktesten, wenn [...] nicht immer im selben <div>- Bereich stehen?
Deklariere zu Beginn der Datei eine Referenz auf das entsprechende Objekt.
Au weia. ich hab so viel Geschiss damit, zu versuchen, dass es auf vielen Browsern läuft, das geht auf keine Kuhhaut...
Oft laäßt das auf einen Konzeptfehler schließen... sorry...
Is ja gut... ich hatte den Quellcode schon bestmoeglich gestaucht
Eine URL hättest Du nicht zu stauchen brauchen.
Cheatah
Tach nochmal
SO nicht, aber so. Ansprechen kannst Du es auf jeden Fall.
also: mit
document.Formularname.Textfeldname.value
kann ich es nicht ansprechen, zumindest meckert er da.
Ich habe eigentlich nicht vor, mir an DHTML die Finger zu verbrennen. Gibt es keinen einfachen Ausdruck mehr, mit dem ich mein ganz normales Formular per Javascript nachträglich mit Cookiedaten füllen kann, OHNE die <div>s rauszuschmeissen?
Ich wollte lediglich CSS Style Sheets verwenden, kein DHTML im eigentlichen sinn.
Bitte sag doch sowas wie: "Da schreibst Du einfach statt
document.Formularname.Textfeldname.value = sowiesodas;
document.Soistesrichtig.Formularname.Textfeldname.value = sowiesodas;
Oder muss ich mich auf den ganzen DHTML DOM Mist einlassen?!?
Hannes
Deklariere zu Beginn der Datei eine Referenz auf das entsprechende Objekt.
Also: ich habe zum einen diesen Layer, dessen Objekt ich anspreche, und den verweise ich auf mein Formular?!? puuh- man ich wollte doch nur...
Oft laäßt das auf einen Konzeptfehler schließen... sorry...
Naja, ich hab ja extra alles bisherige geloescht und will gerade derartige Fehler vermeiden. Dazu muss ich eben noch ein bischen Fettnaepfchen erwischen.
Dank Dir auf jeden Fall!
Hi,
also: mit
document.Formularname.Textfeldname.value
kann ich es nicht ansprechen, zumindest meckert er da.
richtig. Wenn Du aber die Formularreferenz dem DOM von Netscape 4 anpaßt... :-)
Ich habe eigentlich nicht vor, mir an DHTML die Finger zu verbrennen.
Dann darfst Du die entsprechenden Elemente nicht verwenden. Ent- oder weder.
Oder muss ich mich auf den ganzen DHTML DOM Mist einlassen?!?
Wenn Du nicht beim nächsten ähnlich gelagerten Problem wieder nachfragen willst: ja.
Cheatah