Patrick: Variable aus Funktion in anderem Frame saugen

Hallo,

ich möchte mir eine Variable aus einer Funktion saugen, welche sich in einem anderen Frame befindet.

der framename lautet: nullframe
die funktion lautet:  branchfkt
die variable lautet:  feld3

meine konstruktion hier gibt mir leider kein Ergebniss:

parent.nullframe.document.branchfkt.feld3.value ist null oder kein objekt.

hier meine konstruktion:

var sucharray = parent.nullframe.document.branchfkt.feld3.value;

Was habe ich hier falsch gemacht?

  1. ich möchte mir eine Variable aus einer Funktion saugen, welche sich in einem anderen Frame befindet.

    Ich vermute mal, das du dich ein wenig unglücklich ausfrückst.

    der framename lautet: nullframe
    die funktion lautet:  branchfkt
    die variable lautet:  feld3

    Wenn du wirklich den Wert einer Variabeln willst, ist das übliche Vorgehen diesen mit return weiter zu geben:

    function branchfkt()
    {
    ...

    return feld3;
    }

    meine konstruktion hier gibt mir leider kein Ergebniss:

    parent.nullframe.document.branchfkt.feld3.value ist null oder kein objekt.

    aber das läßt darauf schliessen, das du ein Formularfeld meinst. wie auch immer, es läßt sich nicht sagen. Aber auf jeden Fall solltest du ein wenig Debugging betreiben und am besten Moziall verwenden, da die Fehlermeldungen besser sind..

    Wenn du ein Konstrukt wie oben hast, prüfe nach und nach auf jede Eigenschaft:

    alert( typeof parent);
    alert( typeof parent.nullframe);
    alert( typeof parent.nullframe.document);
    alert( typeof parent.nullframe.document.branchfkt);
    alert( typeof parent.nullframe.document.branchfkt.feld3);
    alert( typeof parent.nullframe.document.branchfkt.feld3.value);

    Dann hast du wenigstens eine Ahnung wo was schief läuft.

    hier meine konstruktion:

    var sucharray = parent.nullframe.document.branchfkt.feld3.value;

    Was das jetzt wieder soll ist mir schleierhaft.
    Falls du immer noch nicht weiterkommst, wären zusammenhängende Codestücke fur uns hilfreich.

    Struppi.

    1. Also ich habe im oberen Frame (nullframe) eine funktion:

      <script language="JavaScript1.2" type="text/javascript">
      function suchfkt(suchform)
      {
      suchform=suchform.toUpperCase();
      var suchloop;
      var sucharray = new Array();
      var counters = 0;
      var counterb = 0;
      var branchtmp;

      for(suchloop=0; suchloop<1000; suchloop++)
      {
      branchtmp=branchname[suchloop].toUpperCase();
      if (branchtmp==suchform || branchnumb[suchloop]==suchform)
      {
      sucharray[counters]=suchloop;
      counters++
      }
      }
      parent.content.location.href = "suchausgabe.htm";
      }
      </script>

      Aus dieser wird wie in der letzten Zeile zu sehen ist, die Suchausgabe aufgerufen, diese befindet sich im unteren Frame (content), der obere frame bleibt also geöffnet.

      <html>

      <head>

      <meta http-equiv="pragma" content="no-cache">
       <meta http-equiv="expires" content="-1">

      <script language="JavaScript1.2" src="js/branches.js" type="text/javascript"></script>

      </head>

      <body bgcolor=#ffffff leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

      <script>

      alert(XXX);

      </script>

      </body>
      </html>

      Da wo jetzt alert(xxx) steht soll das feld sucharray aus der funktion suchfkt stehen, welche sich weiterhin im oberen frame (nullframe) befindet.

      wass muss ich nun eingeben, damit ich diesen wert bekomme?

      Danke

      1. Da wo jetzt alert(xxx) steht soll das feld sucharray aus der funktion suchfkt stehen, welche sich weiterhin im oberen frame (nullframe) befindet.

        Was meinst du den mit Feld? Es gibt kein Feld in der Funktion.

        .....

        nachdem ich mir alles nochmal durchgelesen habe, wird mir so langsam klar was du mit Feld meinst. du meinst das Array "sucharray".

        wass muss ich nun eingeben, damit ich diesen wert bekomme?

        Gar nicht, du definierst den Wert lokal nach beenden der Funktion ist das Array nicht mehr existent.

        Es kommt einfach darauf an was du machen willst.

        Willst du aus dem Frame content aus der Seite 'suchausgabe.htm' das Ergebniss das in der Funktion erzeugt wird ausgeben oder willst du aus nullframe in die Seite content schreiben?

        Struppi.

  2. Hi Patrick,

    ich möchte mir eine Variable aus einer Funktion saugen, welche sich in einem anderen Frame befindet.

    var sucharray = parent.nullframe.document.branchfkt.feld3.value;

    Was habe ich hier falsch gemacht?

    Bin mir da nicht ganz sicher, aber ich glaube fast, aus einer Funktion kann man keine Variablen entnehmen, weil diese erst mit dem Aufruf der Funktion wirklich definiert werden.

    parent.frames[0].VARIABLE

    funktioniert, wenn die VARIABLE außerhalb von Funktionen notiert ist,

    parent.frames[0].FORMname.FELDname.value

    entnimmt die Variable aus einem Formular-Feld.

    Vielleicht hilft Dir das weiter.

    1. hi,

      Bin mir da nicht ganz sicher, aber ich glaube fast, aus einer Funktion kann man keine Variablen entnehmen, weil diese erst mit dem Aufruf der Funktion wirklich definiert werden.

      das hängt u.a. davon ab, ob sie global oder lokal definiert wurden, http://selfhtml.teamone.de/javascript/sprache/variablen.htm#definieren.

      gruss,
      wahsaga

      1. hi,

        Bin mir da nicht ganz sicher, aber ich glaube fast, aus einer Funktion kann man keine Variablen entnehmen, weil diese erst mit dem Aufruf der Funktion wirklich definiert werden.

        das hängt u.a. davon ab, ob sie global oder lokal definiert wurden, http://selfhtml.teamone.de/javascript/sprache/variablen.htm#definieren.

        gruss,
        wahsaga

        Also, wenn ich nun eine globale Variable habe, wie suage ich mir diese dann aus dem frame (nullframe) und defniere sie in meinem unteren Frame (content) als var xyz = ???;

        Danke.

      2. Mahlzeit!

        Bin mir da nicht ganz sicher, aber ich glaube fast, aus einer Funktion kann man keine Variablen entnehmen, weil diese erst mit dem Aufruf der Funktion wirklich definiert werden.

        das hängt u.a. davon ab, ob sie global oder lokal definiert wurden,

        Hm, lt. dem Text hinter Deinem Link gilt:

        "Wenn Sie innerhalb von Funktionen Variablen ohne das Schlüsselwort var deklarieren, dann sind diese Variablen global."

        Geht aber nicht, zumindest nicht im IE per

        parent.frames[0].VARIABLE

        , welches für Variablen außerhalb von Funktionen funzt..

        1. hi,

          "Wenn Sie innerhalb von Funktionen Variablen ohne das Schlüsselwort var deklarieren, dann sind diese Variablen global."

          dazu muss sie ausserhalb der funktion erstmal _mit_ dem schlüsselwort var angelegt worden sein.

          ohne var in der funktion heisst dann, benutzte die variable, die bereits ausserhalb der funktion existiert.
          mit var in der funktion würde eine neue variable gleichen namens anlegen, die aber nur innerhalb der funktion existiert.

          gruss,
          wahsaga

          1. Hallo!

            "Wenn Sie innerhalb von Funktionen Variablen ohne das Schlüsselwort var deklarieren, dann sind diese Variablen global."

            dazu muss sie ausserhalb der funktion erstmal _mit_ dem schlüsselwort var angelegt worden sein.

            Ja. Weil Variablen in einer Funktion erst dann real existieren, wenn die Funktion abgespult wird.