Submit()
Dash
- javascript
0 Dash0 molily0 Dash0 eval()
molily0 Eval()
Hallo
Kann mir jemand sagen wieso dieser Code im Netscape/Mozilla nicht funktioniert?
function submit() {
bodyF=eval("parent.bodyF");
bodyF.keyHandler.submit();
}
wobei bodyF ein anderes Frame ist. Submit() wird durch einen Button aufgerufen. Leider passiert überhaupt nichts wenn ich diesen Button drücke.
TX
Dash
Noch was vergessen: Das Formular im anderen Frame ist in keinem Layer (div) eingepackt.
Hallo, Dash,
Kann mir jemand sagen wieso dieser Code im Netscape/Mozilla nicht funktioniert?
Do-it-yourself, siehe http://glasgoogle.de/.
function submit() {
bodyF=eval("parent.bodyF");
Dies eval-Anweisung erscheint mir sinnlos.
bodyF.keyHandler.submit();
Das Schema lautet: parent.[framename].document.[formularname].submit(); (Sofern ich gerade nicht benommen bin.)
Mit parent wird das darüberliegende Frameset angesprochen, siehe http://selfhtml.teamone.de/javascript/objekte/frames.htm#allgemeines sowie http://aktuell.de.selfhtml.org/tippstricks/javascript/fensterzugriff/.
Mit dem Unterobjekt mit dem Namen des name-Attributs des frame-Element - siehe http://selfhtml.teamone.de/html/frames/definieren.htm#frames adressierst du das window-Objekt dieses Frames.
Wiederum über das document-Unterobjekt (Objekthierarchie siehe http://selfhtml.teamone.de/javascript/objekte/) kannst du auf die Formulare des Dokuments zugreifen, siehe http://selfhtml.teamone.de/javascript/objekte/forms.htm#allgemeines (offensichtlich willst du Methode 3 verwenden), dazu musst du dem betreffenden form-Element mit dem name-Attribut einen Bezeichner zugewiesen haben (ebd.), über welchen du in JavaScript auf das Formular zugreifen kannst.
Mit der Methode submit() lässt sich das Formular dann absenden, siehe http://selfhtml.teamone.de/javascript/objekte/forms.htm#submit.
Leider passiert überhaupt nichts wenn ich diesen Button drücke.
Siehe oben - du solltest dir angewöhnen, Fehler systematisch zu analysieren.
Grüße,
Links^WMathias
Danke für die Antwort.
Das Problem lag (wie du geschrieben hast) daran, dass ich vergessen habe das document anzusprechen...
und der eval wird ja nur gebraucht wenn ich der Javascript Funktion Parameter übergebe.
Cu
Dash
Hallo, Dash,
Danke für die Antwort.
Das Problem lag (wie du geschrieben hast) daran, dass ich vergessen habe das document anzusprechen...
und der eval wird ja nur gebraucht wenn ich der Javascript Funktion Parameter übergebe.
Ich verstehe zwar nicht genau, wieso du der Funktion Parameter übergeben solltest, um Namen für verschiedene Formulare zu übergeben, aber meines Wissens brauchst du eval() hier sowieso nicht, um variable Variablen zu realisieren, siehe http://aktuell.de.selfhtml.org/artikel/javascript/oomodell/. Meinem Verständnis dürfte eine Anwendung ungefähr folgendermaßen aussehen (als Beispiel):
<script type="text/javascript">
function absenden (nummer) {
/* Objekt über den assoziativen Array ansprechen */
window.document[nummer].submit();
}
</script>
...
<form name="eins" action="">
<div><input type="hidden" name="eins" value="eins" /></div>
</form>
<form name="zwei" action="">
<div><input type="hidden" name="zwei" value="zwei" /></div>
</form>
<p><button onclick="absenden('eins')">Formular eins absenden</button></p>
<p><button onclick="absenden('zwei')">Formular zwei absenden</button></p>
Funktioniert problemlos. Noch naheliegender wäre natürlich document.forms[nummer], siehe erneut http://selfhtml.teamone.de/javascript/objekte/forms.htm#allgemeines, Variante zwei.
Grüße,
Mathias
Hallo Mathias
Ich verstehe zwar nicht genau, wieso du der Funktion Parameter übergeben solltest, um Namen für verschiedene Formulare zu übergeben, aber meines Wissens brauchst du eval() hier sowieso nicht, um variable Variablen zu realisieren, siehe http://aktuell.de.selfhtml.org/artikel/javascript/oomodell/. »»
Sorry, ich glaube du hast mich falsch verstanden. Eval() brauche ich hier wirklich nicht. Habe es auch sofort rausgenommen. Und die Formularnamen binde ich sowieso über JSP ein und nicht per Variable übergabe.
Gruss
Dash