PSD-Tutorials.de
Forum für Design, Fotografie & Bildbearbeitung
Tutkit
Agentur
Hilfe
Kontakt
Start
Forum
Aktuelles
Besonderer Inhalt
Foren durchsuchen
Tutorials
News
Anmelden
Kostenlos registrieren
Aktuelles
Suche
Suche
Nur Titel durchsuchen
Von:
Menü
Anmelden
Kostenlos registrieren
App installieren
Installieren
JavaScript ist deaktiviert. Für eine bessere Darstellung aktiviere bitte JavaScript in deinem Browser, bevor du fortfährst.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen
alternativen Browser
verwenden.
Antworten auf deine Fragen:
Neues Thema erstellen
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
Eingabe -> Ausgabe in ein neues Dokument über JS
Beitrag
<blockquote data-quote="Chriss1987" data-source="post: 1537440" data-attributes="member: 23088"><p><strong>AW: Eingabe -> Ausgabe in ein neues Dokument über JS</strong></p><p></p><p>Guten Morgen,</p><p>also, ich hab mal grad drübergeschaut und mir sind ein paar Fehler aufgefallen. Ich fange mal beim 1. HTML-File an:</p><p></p><p>[html]<script ></p><p> function EingabeGesamt (Alter, Username, Password) {</p><p> alert ("Hallo Ihre Eingabe wurde geprüft. Bitte betätigen Sie den Button Ok das wir sie vollständig weiterleiten können!");</p><p></p><p> document.write = Alter;</p><p> document.FormGesamt.Ergebnisfeld1.value = Alter;</p><p></p><p> document.write = Username;</p><p> document.FormGesamt.Ergebnisfeld2.value = Username;</p><p></p><p> document.write = Password;</p><p> document.FormGesamt.Ergebnisfeld3.value = Password</p><p></p><p> window.open("formular2.html");</p><p></p><p> }</p><p></script>[/html]</p><p>Wenn ich das richtig verstanden habe, möchtest du ein 2. Fenster öffnen und die Felder dort mit den Formularangaben füllen. In deinem geposteten Code passiert jedoch folgendes: klar, zuerst die Meldung, dann (wir lassen mal die write-Zeilen weg) möchtest du anscheinend die Felder des neuen Fensters füllen und erst dann erzeugst du das 2. Fenster! Das 2. Fenster wird erst garnicht geöffnet, weil Javascript in der Zeile mit <em>"document.FormGesamt.Ergebnisfeld1.value = Alter;"</em> abbricht, da Ergebnisfeld1 im aktuellen Fenster nicht existiert (benutzt du FireFox, kannst du einfach in die Fehlerkonsole schauen, dort werden alle JS-Fehler, sogar mit Zeilennummer, angezeigt).</p><p></p><p>Damit es in etwa so funktioniert, ist es notwendig, die Funktion etwas umzustellen: erst ein Fenster erzeugen und dann auf die Elemente zugreifen. So könnte die Funktion aussehen:</p><p>[html]<script ></p><p> function EingabeGesamt (Alter, Username, Password) {</p><p> alert ("Hallo Ihre Eingabe wurde geprüft. Bitte betätigen Sie den Button Ok das wir sie vollständig weiterleiten können!");</p><p> </p><p> fenster = window.open("formular2.html", "fenster", "width=300,height=400,left=100,top=200");</p><p> </p><p> document.write = Alter;</p><p> document.FormGesamt.Ergebnisfeld1.value = Alter;</p><p></p><p> document.write = Username;</p><p> document.FormGesamt.Ergebnisfeld2.value = Username;</p><p></p><p> document.write = Password;</p><p> document.FormGesamt.Ergebnisfeld3.value = Password;</p><p></p><p> }</p><p></script>[/html]</p><p>So funktioniert es jedoch immernoch nicht, doch schauen wir uns zunächst die 2. HTML-Datei an:</p><p>[html]<html></p><p><head></p><p><title>Unser erstes Javascript</title></p><p></head></p><p><body></p><p><script></p><p> <pre></p><p> Alter: <input type="text" name="Ergebnisfeld1"></input></p><p> Username: <input type="text" name="Ergebnisfeld2"></input></p><p> Password: <input type="password" name="Ergebnisfeld3"></input></p><p> </pre></p><p></script></p><p></body></p><p></html>[/html]</p><p>So wirst du nie eine Ausgabe bekommen, weil die Felder im "<script>"-Tag stehen, also umschreiben in:</p><p>[html]<html></p><p><head></p><p><title>Unser erstes Javascript</title></p><p></head></p><p><body></p><p> <pre></p><p> Alter: <input id="Ergebnisfeld1" type="text" name="Ergebnisfeld1"></input></p><p> Username: <input id="Ergebnisfeld2" type="text" name="Ergebnisfeld2"></input></p><p> Password: <input id="Ergebnisfeld3" type="password" name="Ergebnisfeld3"></input></p><p> </pre></p><p></body></p><p></html>[/html]</p><p>Da du kein Form-Tag benutzt habe ich den Feldern eine ID verpasst, damit wir problemlos darauf zugreigen können. Rufen wir die 2. Datei im Browser auf, sehen wir nun eine Ausgabe.</p><p></p><p>Zurück zur 1. Datei:</p><p>[code]document.FormGesamt.Ergebnisfeld1.value = Alter;[/code]</p><p>die Zeile besagt, man möchte im aktuellen Dokument, im Formular FormGesamt auf das Element Ergebnisfeld1 zugreifen. Kann so nicht funktionieren, da es das Element im aktuellen Dokument nicht gibt. Was wir wollen ist, auf das Element im 2. Fenster zugreifen. Dafür haben wir ja die Variable <em>fenster</em>:</p><p>[code]fenster.document.getElementById("Ergebnisfeld1").value = Alter;[/code]</p><p>Erklärung: der Zugriff erfolgt auf das Document des 2. Fensters, auf das Element mit der ID "Ergebnisfeld1".</p><p>Hier nochmal die Funktion:</p><p>[html]<script ></p><p> function EingabeGesamt (Alter, Username, Password) {</p><p> alert ("Hallo Ihre Eingabe wurde geprüft. Bitte betätigen Sie den Button Ok das wir sie vollständig weiterleiten können!");</p><p> </p><p> fenster = window.open("formular2.html", "fenster", "width=600,height=400,left=100,top=200");</p><p> </p><p> document.write = Alter;</p><p> fenster.document.getElementById("Ergebnisfeld1").value = Alter;</p><p></p><p> document.write = Username;</p><p> fenster.document.getElementById("Ergebnisfeld2").value = Username;</p><p></p><p> document.write = Password;</p><p> fenster.document.getElementById("Ergebnisfeld3").value = Password;</p><p></p><p> }</p><p></script>[/html]</p><p></p><p>Theoretisch sollte das so nun funktionieren, allerdings ergibt sich folgendes Problem:</p><p>Solange das Document im 2. Fenster noch nicht vollständig geladen ist, kann über DOM auch noch kein Zugriff auf die Elemente erfolgen. Ist das Fenster bereits geöffnet, ist das Element vorhanden. Beim Testen fällt dann auf, dass die Werte bei geöffnetem Fenster eingetragen werden, dann jedoch das Fenster neu geladen wird.</p><p></p><p>Was jetzt noch fehlt, ist abzuwarten, dass das 2. Fenster vollständig geladen ist und erst dann die Werte an die Elemente zu übergeben...</p><p>Dazu verwenden wir das "onload"-Attribut im "body"-Tag im 2. Fenster. Hier rufen wir eine Funktion auf, die dann die Werte den Elementen übergibt, das ganze sieht dann in der 2. Datei so aus:</p><p>[html]...<body onload="opener.EingabeLos();">...[/html]</p><p>Das entsprechende JS im 1. Dokument:</p><p>[html]<script ></p><p>var alter_;</p><p>var username_;</p><p>var password_;</p><p>var fenster;</p><p></p><p>function EingabeGesamt (Alter, Username, Password)</p><p>{</p><p> alert ("Hallo Ihre Eingabe wurde geprüft. Bitte betätigen Sie den Button Ok das wir sie vollständig weiterleiten können!");</p><p></p><p> fenster = window.open("formular2.html", "fenster", "width=600,height=400,left=100,top=200");</p><p></p><p> alter_ = Alter;</p><p></p><p> username_ = Username;</p><p></p><p> password_ = Password;</p><p>}</p><p> </p><p>function EingabeLos ()</p><p>{</p><p> fenster.document.getElementById("Ergebnisfeld1").value = alter_;</p><p></p><p> fenster.document.getElementById("Ergebnisfeld2").value = username_;</p><p></p><p> fenster.document.getElementById("Ergebnisfeld3").value = password_;</p><p>}</p><p></script>[/html]</p><p>In der ersten Funktion wird nur das Fenster erzeugt und die übergebenen Parameter in globale Variablen gespeichert. Ist dann das Dokument im 2. Fenster fertig geladen, wird die 2. Funktion aufgerufen und die zwischengespeicherten Werte an die jetzt verfügbaren Elemente im 2. Fenster übergeben...</p><p></p><p>Klar soweit?</p><p></p><p>Hoffe, ich konnte ein wenig helfen und hab das Anliegen richtig verstanden...</p><p></p><p>Schöne grüße aus dem Sauerland!</p><p>Chriss</p></blockquote><p></p>
[QUOTE="Chriss1987, post: 1537440, member: 23088"] [b]AW: Eingabe -> Ausgabe in ein neues Dokument über JS[/b] Guten Morgen, also, ich hab mal grad drübergeschaut und mir sind ein paar Fehler aufgefallen. Ich fange mal beim 1. HTML-File an: [html]<script > function EingabeGesamt (Alter, Username, Password) { alert ("Hallo Ihre Eingabe wurde geprüft. Bitte betätigen Sie den Button Ok das wir sie vollständig weiterleiten können!"); document.write = Alter; document.FormGesamt.Ergebnisfeld1.value = Alter; document.write = Username; document.FormGesamt.Ergebnisfeld2.value = Username; document.write = Password; document.FormGesamt.Ergebnisfeld3.value = Password window.open("formular2.html"); } </script>[/html] Wenn ich das richtig verstanden habe, möchtest du ein 2. Fenster öffnen und die Felder dort mit den Formularangaben füllen. In deinem geposteten Code passiert jedoch folgendes: klar, zuerst die Meldung, dann (wir lassen mal die write-Zeilen weg) möchtest du anscheinend die Felder des neuen Fensters füllen und erst dann erzeugst du das 2. Fenster! Das 2. Fenster wird erst garnicht geöffnet, weil Javascript in der Zeile mit [i]"document.FormGesamt.Ergebnisfeld1.value = Alter;"[/i] abbricht, da Ergebnisfeld1 im aktuellen Fenster nicht existiert (benutzt du FireFox, kannst du einfach in die Fehlerkonsole schauen, dort werden alle JS-Fehler, sogar mit Zeilennummer, angezeigt). Damit es in etwa so funktioniert, ist es notwendig, die Funktion etwas umzustellen: erst ein Fenster erzeugen und dann auf die Elemente zugreifen. So könnte die Funktion aussehen: [html]<script > function EingabeGesamt (Alter, Username, Password) { alert ("Hallo Ihre Eingabe wurde geprüft. Bitte betätigen Sie den Button Ok das wir sie vollständig weiterleiten können!"); fenster = window.open("formular2.html", "fenster", "width=300,height=400,left=100,top=200"); document.write = Alter; document.FormGesamt.Ergebnisfeld1.value = Alter; document.write = Username; document.FormGesamt.Ergebnisfeld2.value = Username; document.write = Password; document.FormGesamt.Ergebnisfeld3.value = Password; } </script>[/html] So funktioniert es jedoch immernoch nicht, doch schauen wir uns zunächst die 2. HTML-Datei an: [html]<html> <head> <title>Unser erstes Javascript</title> </head> <body> <script> <pre> Alter: <input type="text" name="Ergebnisfeld1"></input> Username: <input type="text" name="Ergebnisfeld2"></input> Password: <input type="password" name="Ergebnisfeld3"></input> </pre> </script> </body> </html>[/html] So wirst du nie eine Ausgabe bekommen, weil die Felder im "<script>"-Tag stehen, also umschreiben in: [html]<html> <head> <title>Unser erstes Javascript</title> </head> <body> <pre> Alter: <input id="Ergebnisfeld1" type="text" name="Ergebnisfeld1"></input> Username: <input id="Ergebnisfeld2" type="text" name="Ergebnisfeld2"></input> Password: <input id="Ergebnisfeld3" type="password" name="Ergebnisfeld3"></input> </pre> </body> </html>[/html] Da du kein Form-Tag benutzt habe ich den Feldern eine ID verpasst, damit wir problemlos darauf zugreigen können. Rufen wir die 2. Datei im Browser auf, sehen wir nun eine Ausgabe. Zurück zur 1. Datei: [code]document.FormGesamt.Ergebnisfeld1.value = Alter;[/code] die Zeile besagt, man möchte im aktuellen Dokument, im Formular FormGesamt auf das Element Ergebnisfeld1 zugreifen. Kann so nicht funktionieren, da es das Element im aktuellen Dokument nicht gibt. Was wir wollen ist, auf das Element im 2. Fenster zugreifen. Dafür haben wir ja die Variable [i]fenster[/i]: [code]fenster.document.getElementById("Ergebnisfeld1").value = Alter;[/code] Erklärung: der Zugriff erfolgt auf das Document des 2. Fensters, auf das Element mit der ID "Ergebnisfeld1". Hier nochmal die Funktion: [html]<script > function EingabeGesamt (Alter, Username, Password) { alert ("Hallo Ihre Eingabe wurde geprüft. Bitte betätigen Sie den Button Ok das wir sie vollständig weiterleiten können!"); fenster = window.open("formular2.html", "fenster", "width=600,height=400,left=100,top=200"); document.write = Alter; fenster.document.getElementById("Ergebnisfeld1").value = Alter; document.write = Username; fenster.document.getElementById("Ergebnisfeld2").value = Username; document.write = Password; fenster.document.getElementById("Ergebnisfeld3").value = Password; } </script>[/html] Theoretisch sollte das so nun funktionieren, allerdings ergibt sich folgendes Problem: Solange das Document im 2. Fenster noch nicht vollständig geladen ist, kann über DOM auch noch kein Zugriff auf die Elemente erfolgen. Ist das Fenster bereits geöffnet, ist das Element vorhanden. Beim Testen fällt dann auf, dass die Werte bei geöffnetem Fenster eingetragen werden, dann jedoch das Fenster neu geladen wird. Was jetzt noch fehlt, ist abzuwarten, dass das 2. Fenster vollständig geladen ist und erst dann die Werte an die Elemente zu übergeben... Dazu verwenden wir das "onload"-Attribut im "body"-Tag im 2. Fenster. Hier rufen wir eine Funktion auf, die dann die Werte den Elementen übergibt, das ganze sieht dann in der 2. Datei so aus: [html]...<body onload="opener.EingabeLos();">...[/html] Das entsprechende JS im 1. Dokument: [html]<script > var alter_; var username_; var password_; var fenster; function EingabeGesamt (Alter, Username, Password) { alert ("Hallo Ihre Eingabe wurde geprüft. Bitte betätigen Sie den Button Ok das wir sie vollständig weiterleiten können!"); fenster = window.open("formular2.html", "fenster", "width=600,height=400,left=100,top=200"); alter_ = Alter; username_ = Username; password_ = Password; } function EingabeLos () { fenster.document.getElementById("Ergebnisfeld1").value = alter_; fenster.document.getElementById("Ergebnisfeld2").value = username_; fenster.document.getElementById("Ergebnisfeld3").value = password_; } </script>[/html] In der ersten Funktion wird nur das Fenster erzeugt und die übergebenen Parameter in globale Variablen gespeichert. Ist dann das Dokument im 2. Fenster fertig geladen, wird die 2. Funktion aufgerufen und die zwischengespeicherten Werte an die jetzt verfügbaren Elemente im 2. Fenster übergeben... Klar soweit? Hoffe, ich konnte ein wenig helfen und hab das Anliegen richtig verstanden... Schöne grüße aus dem Sauerland! Chriss [/QUOTE]
Bilder bitte
hier hochladen
und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Zitate einfügen…
Authentifizierung
Wenn ▲ = 7, ▼ = 3, ◇ = 2 und die Summe von ▲ und ▼ durch ◇ geteilt wird, was ist das Ergebnis?
Antworten
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
Eingabe -> Ausgabe in ein neues Dokument über JS
Oben