Charles: Layer

Hallo
hat jemand eine Idee ?
Ich habe eine HTML Seite mit zwei Layern. Innerhalb der Layer wird jeweils mittels iFrame eine andere HTML Seite angezeigt. Ich möchte nun vom Layer1 aus einen eingegebene Text in ein Formulartextfeld, via Javascript im Layer2 z.b. in einem ReadOnly Feld anzeigen. Ich bekommen die Syntax nicht hin.

Wie kann man auf ein Textfeld in einem anderen Layer eines anderes Dokuments zugreifen ?

Zuletzt habe ich folgendes versucht:
parent.document.forms.form1.txtfeld1.value

oder:
parent.document.getElementById("Layer2").forms.form1.txtfeld1.value

Hat jemand eine Idee ?

  1. Hi Charles!

    Was spricht dagegen, dem Textfeld eine eindeutige id="uniq" zu geben und dann auf dieses Element mit document.getElementById("uniq").xy zuzugreifen?
    Für normale html Elemente (p,div, etc) ist der Inhalt mit einem angehängten .firstChild.data zu erreichen, bei input ist .value zu verwenden (also .xy durch wahlweise .firstChild.data oder .value ersetzen).

    Grüße,
    Richard

    1. Hallo Richard,

      Danke für Deine Antwort, aber das hab ich auch schon versucht.

      parent.document.getElementById("txtfeld1").value

      Ich bekomme immer die Fehlermeldung
      ... ist kein Objekt oder Null

      mit der Anweisung
      parent.document.getElementById("Layer2") kann ich auf die Eigenschaften des zweiten Layer zugreifen, das funktioniert, z.B. zum Schließen des Layers (visibility=hidden)

      hast Du vielleicht noch eine andere Idee ?
      Das Problem scheint der Zugriff auf das Element zu sein.

      Viele Grüße
      Charles

      1. Hi

        Das Problem scheint der Zugriff auf das Element zu sein.

        Das Problem ist das du auf ein Dokument zugreifen willst. Wenn ich dich richtig verstanden habe hast du 2 Container. In beiden ist je ein Iframe mit einem Formular.

        Das mit parent hast du ja auch schon richtig gemacht. Warum denkst Du nun, kennt der Container im Parent einfach so irgendein Element des Dokuments in seinem Frame? Geh also ueber den Frame.

        --
        Trau Dich!
         
        1. Hallo Steel

          Danke für den Tip, das hatte ich auch schon versucht. Ist vielleicht die Syntax falsch ?

          parent.document.iFrameName.getElementById("TextfeldName").Eigenschaft = Wert;

          oder

          parent.document.iFrameName.TextfeldName.Eigenschaft = Wert;

          oder

          parent.document.getElementById("iFrameID").TextfeldName.Eigenschaft = Wert;

          oder

          parent.document.getElementById("iFrameID").getElementById("TextfeldID").Eigenschaft = Wert;

          Das funktioniert alles nicht.

          Sollte jemand die Syntax kennen, wäre ich dankbar für einen Tipp.

          Charles

          1. Hi!

            Du vergisst da was. Du hast ja wohl drei verschiedene Dokumente. mit parent.document ehst du aus dem ersten Dokument (im Frame) raus in das uebergeordnete Dokument. Jetzt musst Du nur noch in das dokument im Iframe. Den haste ja gefunden. Der hat aber kein Textfeld, dessen Wert er aendern koennte. Was er hat ist ein Dokument... ;)

            Das mit den Iframes haette ich nicht so gemacht. Muessen dir wirklich sein?

            --
            Trau Dich!
             
            1. Nochmal hi!

              Was er hat ist ein Dokument... ;)

              Er hat natuerlich ein window... Das window dann ein Dokument.

              --
              Trau Dich!
               
          2. Hallo,

            nochmal ein Querverweis zu einem Doppelposting mitsamt Lösung:
            https://forum.selfhtml.org/?t=175443&m=1153624

            Mathias