conni: Wertübergabe aus iframe

Hallo zusammen,
habe folgendes Problem:
auf meiner Seite befindet sich ein Formular mit ausklappbaren Auswahlmöglichkeiten. Je nach Auswahl wird in einem iframe ein weiteres Ausklappform geöffnet. Je nach Auswahl dort wieder ein Ausklappform in noch einem iframe im Hauptfenster.

<form name="formhgr" action="">Erstes Ausklappform
<select name="hgr" size="1" onchange="window.ogr.location.href= document.formhgr.hgr.options[document.formhgr.hgr.selectedIndex].value">
  <option value="h00.htm" id="xx">Auswahl</option>
  <option value="auswahlundwiedergabe_h00.htm" id="00">erste Wahl (00)</option>
  <option value="auswahlundwiedergabe_h01.htm" id="01">zweite Wahll (01)</option>
</select>
</form>
<iframe src="" name="ogr" id="ogr" height="25"></iframe>
<iframe src="" name="gr" id="gr" height="25"></iframe>

Nun will ich aber, dass die id's der ausgewählten Optionen gesammelt für alle iframes angezeigt werden (z.B. 00 03 02). Das gelingt mir nur für das erste Ausklappmenü (das sich in keinem iframe befindet).
Habe es in einem externen Javascript versucht mit:

function zeig_zahlen() {
       document.anzeige.az.value = eval(document.formhgr.hgr.options[document.formhgr.hgr.selectedIndex].id);
     var haugr = (document.formhgr.hgr.options[document.formhgr.hgr.selectedIndex].id);
  var obergr = (document.getElementById("ogr").formogr.ogr.options[document.formogr.ogr.selectedIndex].innerHTML);
  var gr = (document.getElementById("gr").formgr.gr.options[document.formgr.gr.selectedIndex].innerHTML);
  var Zahlen = new Array(haugr,obergr);
  var Zahlenkette = Zahlen.join(" ");
document.write(Zahlenkette);
}

Diese Funktion wird im Hauptfenster über einen input-button aufgerufen.

Ich habe schon in Self-html und natürlich auch im Forum gewühlt, aber keine Lösung gefunden. Wenn mir da jemand weiterhelfen könnte, wär ich dankbar.

Conni

  1. Hallo Conni,
    wenn ich dich jetzt richtig verstanden habe, willst du in deinem Iframe eine www.seite aufrufen die wiederum eine ausklappmenu enthält.
    Nun wenn der benutzer im Iframe das ausklappmenu anklickt, geschieht das gleich, es klappt es ein weiteres Iframeausklappmenu im Iframe aus.
    Wenn das so sein sollte, und du dich nun fragst wie du aus dem Iframe, das N'te-element abfragen kannst, kannst du es wie folgt lösen.

    Definiere ein Array im Mainfenster, also praktisch auf der seite wo du das erste Iframe-klappmenu stehen hast. (nenn es meintwegen, auswahl)
    Nun kannst du im nächsten Iframe (ich spreche hierbei von der WWW.Seite die du mit dem Iframe verlinkst), welches ja ne eigenständige HTML-seite ist, beim selectElement onChange Eventhandler einen
    Funktionsaufruf hineinschreiben.
    Der zum einen natürlich dem Iframe die richtige URL dem src parameter zuordnet, zugleich aber auch die ID des angeklickten element an unsere vorher im HAuptfenster definierte 'auswahl' Arrayvariable übergibt.
    Das machst du einfach in dem du top.auswahl[top.auswahl.length] = Wertezuweisung schreibst.
    Du musst hierbei jedoch darauf achten das 'top' auch wirklich die fenster instanz ist die wir wollen. Das geht nur wenn dein fenster keine richtigen frames enthält (iframes sind erstmal egal)
    Du kannst das folgendermaßen vorstellen, du hast ein fenster mit richtigen frames, dass heisst das was du siehst ist praktisch die 2 bis N'te fensterinstanz.
    Da im ersten das Frameset drinne steht. also wenn du schreibst top.auswahl so greifst du praktisch auf das frameset zu.
    Hierbei kannst du jetzt folgenden trick anwenden (naja ist eigentlich garkein trick *gg*)
    Da top eigentlich ein Array ist kannst du nun einfach mit einem index auf das richtige frame zugreifen.
    Also top beinhaltet das oberste Fenster, wenn du nun top[0].auswahl (wir erinnern uns das 'auswahl' unser speichervariable für die IDwerte war)eingibst, so
    greifst du nun auf die auswahl-variable zu die sich in diesem Frame befindet.

    Ich habe auch nochmal den SourceCode des Hauptfenster und der IframeSeite gepostet damit du dir vielleicht ein besseres bild machen kannst.

    Falls ich jetzt völlig falsch liegen sollte. Schreib ruhig nochmal.

    Hoffe dir geholfen zu haben

    Gruß Urmel

    ps. mit dem Button 'test' im hauptfenster kannst du dir die auswahl-variable anzeigen lassen.

    ############################Hauptseite############################
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    <script type="text/javascript">
     <!--
    var auswahl = new Array();

    function change() {
     auswahl[auswahl.length] = document.formhgr.hgr.options[document.formhgr.hgr.selectedIndex].id;
     window.ogr.location.href = document.formhgr.hgr.options[document.formhgr.hgr.selectedIndex].value;
    }

    // -->
     </script>
    </HEAD>
    <BODY>

    <form name="formhgr" action="">Erstes Ausklappform
    <select name="hgr" size="1" onchange="change()">
      <option value="h00.htm" id="xx">Auswahl</option>
      <option value="auswahlundwiedergabe_h00.htm" id="00">erste Wahl (00)</option>
      <option value="auswahlundwiedergabe_h01.htm" id="01">zweite Wahll (01)</option>
    </select>
    </form>
    <iframe src="" name="ogr" id="ogr" height="600"></iframe>
    <iframe src="" name="gr" id="gr" height="600"></iframe>

    <input type="button" value="test" onclick="confirm(auswahl)">

    </BODY>
    </HTML>
    ####################################################################
    ########################Iframeseite#################################
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">

    <script type="text/javascript">
     <!--

    function change(){
     top.auswahl[top.auswahl.length] = document.formhgr.hgr.options[document.formhgr.hgr.selectedIndex].id;
     window.ogr.location.href = document.formhgr.hgr.options[document.formhgr.hgr.selectedIndex].value;
    }

    // -->
    </script>
    </HEAD>
    <BODY>
    <form name="formhgr" action="">Erstes Ausklappform
    <select name="hgr" size="1" onchange="change()">
      <option value="h00.htm" id="xx">Auswahl</option>
      <option value="auswahlundwiedergabe_h00.htm" id="00">erste Wahl (00)</option>
      <option value="auswahlundwiedergabe_h01.htm" id="01">zweite Wahll (01)</option>
    </select>
    </form>
    <iframe src="" name="ogr" id="ogr" height="600"></iframe>
    <iframe src="" name="gr" id="gr" height="600"></iframe>
    </BODY>
    </HTML>

    1. Hallo Urmel,

      gaaanz herzlichen Dank erstmal für deine nächtliche Hilfe.

      Du hast mich auch richtig verstanden und der angegebene Quelltext funzt wunderbar.
      Zwei kleine Anpassungsproblemchen hätte ich aber noch (schade), die ich allein nicht hinbekomme.
      Wenn man in den forms Optionen auswählt und die Auswahl dann noch ändert (z.B. wenn man sich verklickt hat), erscheinen am Ende alle irgendwann ausgewählten id's hintereinander. Wäre es möglich, dass zum Schluss nur die id's angezeigt werden, die aktuell selected sind? Das wäre für mich schon wichtig, denn sonst kann ich das Ganze gar nicht anwenden :-(
      Kann man die Anzeige der id's zum Schluss noch so gestalten, dass sie ohne Kommata hintereinandergeschrieben werden? (Habe übrigens aus "confirm" "document.write" gemacht, damit man sich die id's kopieren und woanders einfügen kann).

      In jedem Falle aber nochmal ganz lieben Dank für deine Hilfe

      Viele Grüße

      Conni

      1. Upsss, du hast natürlich recht. Darauf habe ich nicht geachtet.
        Mit dem unten folgenden Code sollte der fehler behoben sein.

        ########################Mainfenster########################
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
        <HTML>
        <HEAD>
        <TITLE> New Document </TITLE>
        <META NAME="Author" CONTENT="">
        <META NAME="Keywords" CONTENT="">
        <META NAME="Description" CONTENT="">
        <script type="text/javascript">
         <!--
        var auswahl = new Array();
        var tiefe = 0;

        function change() {
         if(tiefe)
          auswahl = new Array;

        auswahl[0] = document.formhgr.hgr.options[document.formhgr.hgr.selectedIndex].id;

        tiefe=1;
         window.ogr.location.href = document.formhgr.hgr.options[document.formhgr.hgr.selectedIndex].value;
        }

        function anzeigen(){
         var stringid="";
         for (var i = 0; i < auswahl.length; i++){

        if(auswahl[i])
           stringid = stringid+' '+auswahl[i];

        else
           break;

        }
         confirm(stringid);
        }
         // -->
         </script>
        </HEAD>
        <BODY>

        <form name="formhgr" action="">Erstes Ausklappform
        <select name="hgr" size="1" onchange="change()">
          <option value="h00.htm" id="xx">Auswahl</option>
          <option value="auswahlundwiedergabe_h00.htm" id="00">erste Wahl (00)</option>
          <option value="auswahlundwiedergabe_h01.htm" id="01">zweite Wahll (01)</option>
        </select>
        </form>
        <iframe src="" name="ogr" id="ogr" height="600"></iframe>
        <iframe src="" name="gr" id="gr" height="600"></iframe>

        <input type="button" value="test" onclick="anzeigen()">

        </BODY>
        </HTML>
        ############################################
        #############Iframeseite####################
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
        <HTML>
        <HEAD>
        <TITLE> New Document </TITLE>
        <META NAME="Generator" CONTENT="EditPlus">
        <META NAME="Author" CONTENT="">
        <META NAME="Keywords" CONTENT="">
        <META NAME="Description" CONTENT="">

        <script type="text/javascript">
         <!--
        var temptiefe=0;

        function change(){

        if(!temptiefe)
          temptiefe=top.tiefe;

        top.auswahl[temptiefe] = document.formhgr.hgr.options[document.formhgr.hgr.selectedIndex].id;

        for(i=temptiefe+1; i<top.auswahl.length; i++){
          top.auswahl[i] = false;
         }

        top.auswahl[temptiefe] = document.formhgr.hgr.options[document.formhgr.hgr.selectedIndex].id;
         window.ogr.location.href = document.formhgr.hgr.options[document.formhgr.hgr.selectedIndex].value;

        top.tiefe = temptiefe+1;
        }

        // -->
        </script>
        </HEAD>
        <BODY>
        <form name="formhgr" action="">Erstes Ausklappform
        <select name="hgr" size="1" onchange="change()">
          <option value="h00.htm" id="xx">Auswahl</option>
          <option value="auswahlundwiedergabe_h00.htm" id="00">erste Wahl (00)</option>
          <option value="auswahlundwiedergabe_h01.htm" id="01">zweite Wahll (01)</option>
        </select>
        </form>
        <iframe src="" name="ogr" id="ogr" height="600"></iframe>
        <iframe src="" name="gr" id="gr" height="600"></iframe>
        </BODY>
        </HTML>
        #######################################

        Hoffe das diesmal alles soweit stimmt, kannst ja mal posten ob es nun bei dir klappt.
        Gruß Urmel

        1. Hallo Urmel,

          Danke erstmal für deine nette Hilfe.

          Es klappt eigentlich ganz gut. Leider wird neben der in der Hauptseite selecteten id nur noch die id angezeigt, die im untersten iframe selected ist. Die anderen werden übersprungen. Hätte ich vielleicht das script in den einzelnen iframe-Dateien anpassen müssen? Ich wüßte aber wirklich nicht, wie.
          Ich bräuchte die id's hintereinander für alle iframes, die selected sind - insgesamt 3 (2 würden es evtl. auch tun).

          Wenn das auch noch funktioniert, wären wohl alle Hürden genommen. Auf alle Fälle nochmals Dankeschön für die Hilfe. Ich hätte das allein nie so weit geschafft (wollte schon aufgeben).

          Viele Grüße
          Conni

          1. also bei mir funzt alles wunderbar,
            du musst diese Funktionsaufrufe, praktisch das was ich zur IframeSeite gepostet habe, zu jeder IFrame-seite hinzufügen, ohne kann es nicht richtig laufen.

            also nochmal:
            Die Iframeseiten müssen wie folgt aussehen und zwar jede.
            Diese kannst du dann natürlich individuell verändern bzw. anpassen.
            #######################Iframe-Seiten############
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
            <HTML>
            <HEAD>
            <TITLE> New Document </TITLE>
            <META NAME="Generator" CONTENT="EditPlus">
            <META NAME="Author" CONTENT="">
            <META NAME="Keywords" CONTENT="">
            <META NAME="Description" CONTENT="">

            <script type="text/javascript">
             <!--
            var temptiefe=0;

            function change(){

            if(!temptiefe)
              temptiefe=top.tiefe;

            top.auswahl[temptiefe] = document.formhgr.hgr.options[document.formhgr.hgr.selectedIndex].id;

            for(i=temptiefe+1; i<top.auswahl.length; i++){
              top.auswahl[i] = false;
             }

            top.auswahl[temptiefe] = document.formhgr.hgr.options[document.formhgr.hgr.selectedIndex].id;
             window.ogr.location.href = document.formhgr.hgr.options[document.formhgr.hgr.selectedIndex].value;

            top.tiefe = temptiefe+1;
            }

            // -->
            </script>
            </HEAD>
            <BODY>
            <form name="formhgr" action="">Erstes Ausklappform
            <select name="hgr" size="1" onchange="change()">
              <option value="h00.htm" id="xx">Auswahl</option>
              <option value="auswahlundwiedergabe_h00.htm" id="00">erste Wahl (00)</option>
              <option value="auswahlundwiedergabe_h01.htm" id="01">zweite Wahll (01)</option>
            </select>
            </form>
            <iframe src="" name="ogr" id="ogr" height="600"></iframe>
            <iframe src="" name="gr" id="gr" height="600"></iframe>

            </BODY>
            </HTML>

            ####################################

            Gruß URmel
            ps. ich hoffe das du es jetzt hinbekommst *gg* ;-)

            1. Hallo Urmel,

              habe das Ganze jetzt auf meinem heimischen PC ausprobiert und siehe ...
                                      es klappt!!!
              Kann es sein, dass das an der IE-Version liegt? (Es klappt mit IE 6.0)

              Ich danke dir jedenfalls ganz herzlich. Werde es morgen nochmal auf dem anderen PC testen (obwohl der Quellcode meiner Meinung nach derselbe war, denn ich habe aus deinen netter Weise so ausführlich geposteten Nachrichten einfach den Code kopiert und eingefügt). Heute komme ich leider nicht mehr an den anderen PC. Morgen schreibe ich auf alle Fälle, ob es dort denn doch noch funzt.

              An dich jedenfalls: Danke Danke

              Viele Grüße
              Conni

              1. Schon wiede reine sache an die ich nicht gedacht habe.
                Es liegt wohl an der tatsache das ich eine gewisse affinität zum IE6x hege. Andere browser kommen mir erst garnicht auf die platte.
                Wenn es wirklich an den verschiedenen Browsertypen liegen sollte, scheide ich erstmal aus dem rennen, da ich nur einen bei mir druff hab und dieser bleibt auch erstmal einzigartig *gg*

                Wenn es wirklich daran liegen sollte kann ich dir nur eines wünschen, viel spass beim debuggen *gg*.
                Die scheisse musste ich nämlich früher oft in ner Firma machen, ooohhh gott war das schrecklich (NS auf Solaris, es gibt nix perverseres)
                Also dann bis morgen

                Gruß Urmel

                1. Hallo Urmel,
                  hab nun auf dem anderen PC den Code noch mal gaanz sauber kopiert und eingefügt. Und jetzt klappt es auch hier. Ich verstehe zwar noch nicht so richtig, warum es gestern nicht ging, aber wichtig ist nur, dass es jetzt hinhaut.

                  Ich bedanke mich nochmal ganz doll für die nette Hilfe, die ja sicher einiges an Zeit gekostet hat.

                  Übrigens, richtig gut fand ich, dass du mir den vollständigen Quellcode gezeigt hast (wenn ich mir manch andere Hilfestellung so durchlese, bin ich hinterher nicht unbedingt klüger als vorher, da ich kein Javascript-Spezi bin).

                  Danke nochmal und viel Spaß weiterhin im Forum

                  Conni

                  1. Hey bitte bitte, ist doch kein problem ;-)
                    Und genau für solche lobpreisungen betreibe ich doch den ganzen aufwand  *gg*
                    Es ist immer schön zu wissen, dass man dem anderen geholfen hat.
                    Gilt natürlich nicht nur für mich, sondern auch für alle anderen Forenspezis ;-)