neues Window aufmachen + Anweisung an Formular im selbigen
Nicola
- javascript
wie könnte eine Funktion aussehen damit ich ein neues Fenster aufmache und in diesem in einem Formular einen Wert anwähle.
ich hab's so versucht:
--Anweisung im offenen Fenster--
<script type="text/javascript">
<!--
function datenselect() {
tagwahl = window.open('../daten.htm');
tagwahl.document.Datenformular.Tage.selectedIndex = 2;
self.focus();
self.close();
}
-->
</script>
[...]
<a href="javascript:datenselect()">blabla</a>
--File ../daten.htm --
<form method="post" action="formmail.php" name="Datenformular">
<div align="center"><select name="Tage" size="1">
<option>2002-01-14</option>
<option>2002-01-21</option>
<option>2002-01-26</option>
<option>2002-02-04</option>
<option>2002-02-16</option>
</select></div>
PROBLEM: IE 5.5 schreibt dass 'tagwahl.document.Datenformular.Tage' kein Objekt ist...
bitte um Hilfe, schönen Dank, N.
Moin.
--Anweisung im offenen Fenster--
<script type="text/javascript">
<!--
function datenselect() {
tagwahl = window.open('../daten.htm');
window.open benötigt ZWEI Argumente, der Fenstername fehlt hier. Daran könnte es schonmal liegen.
tagwahl.document.Datenformular.Tage.selectedIndex = 2;
Andererseits bist du hier sehr schnell: Kaum ist das Fenster geöffnet, willst du auch schon auf seinen Inhalt zugreifen. Hast du schonmal einen Browser gesehen, der Seiten SOFORT angezeigt hat? Ich nicht, davon träume ich immer noch.
Du mußt auf das vollständige Laden der Seite warten. Am einfachsten durch <body onload="..."> in der neuen Seite. Dort rufst du dann die Funktion auf, die du ausgeführt haben willst.
self.focus();
self.close();
self.close gibt mit ziemlicher Sicherheit eine Abfrage, ob das Fenster geschlossen werden soll. Läßt sich auch nicht abstellen. Ohne Nachfrage gehts nur, wenn du das Fenster vorher selbst aufgemacht hast, oder wenn's noch keine History hat, damit also noch nicht gesurft wurde.
}
-->
</script>
[...]
- Sven Rautenberg
Immer wieder Danke für Deine Hilfe, ich hab schon etliche JavaScript-Fortschritte dank Deiner Einwürfe gemacht...
--Anweisung im offenen Fenster--
<script type="text/javascript">
<!--
function datenselect() {
tagwahl = window.open('../daten.htm');
window.open benötigt ZWEI Argumente, der Fenstername fehlt hier. Daran könnte es schonmal liegen.
ich hab die Schreibweise mit nur einem Argument aus der Originaldokumentation von Netscape...
doch daran liegt es ohnehin nicht
tagwahl.document.Datenformular.Tage.selectedIndex = 2;
Andererseits bist du hier sehr schnell: Kaum ist das Fenster geöffnet, willst du auch schon auf seinen Inhalt zugreifen. Hast du schonmal einen Browser gesehen, der Seiten SOFORT angezeigt hat? Ich nicht, davon träume ich immer noch.
Du mußt auf das vollständige Laden der Seite warten. Am einfachsten durch <body onload="..."> in der neuen Seite. Dort rufst du dann die Funktion auf, die du ausgeführt haben willst.
das Problem ist dass es davon 10 Seiten gibt, die immer die gleiche Formularseite laden und immer eine andere Option auswählen sollen
self.focus();
self.close();
self.close gibt mit ziemlicher Sicherheit eine Abfrage, ob das Fenster geschlossen werden soll. Läßt sich auch nicht abstellen. Ohne Nachfrage gehts nur, wenn du das Fenster vorher selbst aufgemacht hast, oder wenn's noch keine History hat, damit also noch nicht gesurft wurde.
Fenster hab ich zuerst aufgemacht, allerdings hab ich mich letztens gefragt wann solch eine Abfrage kommt - daher nochmals Danke
gruß, N.
Moin nochmal.
Immer wieder Danke für Deine Hilfe, ich hab schon etliche JavaScript-Fortschritte dank Deiner Einwürfe gemacht...
Fein. :)
ich hab die Schreibweise mit nur einem Argument aus der Originaldokumentation von Netscape...
doch daran liegt es ohnehin nicht
Aha. Naja, Leerstrings sind auch Fensternamen. Es ist nur schöner, gleich einen zu vergeben, falls man mal ein "target" braucht.
tagwahl.document.Datenformular.Tage.selectedIndex = 2;
Andererseits bist du hier sehr schnell: Kaum ist das Fenster geöffnet, willst du auch schon auf seinen Inhalt zugreifen. Hast du schonmal einen Browser gesehen, der Seiten SOFORT angezeigt hat? Ich nicht, davon träume ich immer noch.
Du mußt auf das vollständige Laden der Seite warten. Am einfachsten durch <body onload="..."> in der neuen Seite. Dort rufst du dann die Funktion auf, die du ausgeführt haben willst.
das Problem ist dass es davon 10 Seiten gibt, die immer die gleiche Formularseite laden und immer eine andere Option auswählen sollen
Das ist im Prinzip garkein Problem.
Wie du erkannt haben wirst, mußt du deine bislang einzelne Funktion trennen. Du kannst sie aber auch in der öffnenden Datei trennen, und sie dann im neuen Fenster mit
onload="opener.funktion_teil2(...)"
aufrufen. So kriegst du die immer gleiche, neue Datei mit immer verschiedenen aufrufenden Dateien hin. Klar, daß der Funktionsname immer gleich sein muß. ;)
Und die Funktion trennst du zwischen window.open und dem Formularzugriff.
Alternativ kannst du natürlich die neue Seite auch mit einem URL-Parameter aufrufen, und dann onload eine Funktion in der neuen Datei aufrufen, welche location.search auswertet (da steht der URL-Parameter drin, inklusive Fragezeichen). So kriegst du eine relativ unabhängige Seite hin, die VIELLEICHT auch auf den richtigen URL-Parameter reagiert, aber ganz sicher nicht mit einer Fehlermeldung reagiert, wenn sie in der öffnenden Datei keine passende Funktion findet. Diese Variante ist eleganter und sicherer.
</selfhtml/javascript/objekte/location.htm#search>
- Sven Rautenberg