Marco: Variableübergabe einer Funktion an eine andere...

Hallo zusammen!

ich hab kürzlich schon was gepostet aber leider hat niemand eine antwort gewusst - vielleicht war das wort 'mac' auch zu abschreckend oder ich hab etwas zu unklar formuliert.
Ich probiers mal etwas klarer:
Also, ich habe eine Funktion die zwei Variablen bekommt: x & y. Die Variablen sollen an eine andere Funktion in einem anderen Frame übergeben werden, mittels location.href="javascript:funktion(x,y)". Dabei sollen die Variablen x und y mit ihren Werten mitübergeben werden.
Leider kommen bei der Funktion in in dem anderen Frame nur Nullen an...ich hab' schon alle mir bekannten syntaxmöglichkeiten ausprobiert und auch versucht die Variablen for dem Senden sicherheitshalber nochmal in einen String zu wandeln - bringt aber alles nix.

Weiss jemand von euch wo da der haken is, bzw. ob sowas überhaupt in JS geht?
Mit konstanten klappt das wunderbar - is nur nicht der sinn der sache....

vielen dank, marco

  1. Moin!

    Also, ich habe eine Funktion die zwei Variablen bekommt: x & y. Die Variablen sollen an eine andere Funktion in einem anderen Frame übergeben werden, mittels location.href="javascript:funktion(x,y)". Dabei sollen die Variablen x und y mit ihren Werten mitübergeben werden.
    Leider kommen bei der Funktion in in dem anderen Frame nur Nullen an...ich hab' schon alle mir bekannten ...

    hm... ich tippe mal auf folgendes Problem. Du hast zwei Frames mit jeweils einer Funktion. Sagen wir - die Funktion im ersten Frame sei fkt_A(x,y) und die im 2. Frame sei fkt_B(x,y).
    Nun bist Du in fkt_A im ersten Frame, und die Variablen x und y sind bekannt. Wenn Du also die andere Funktion direkt über einen Funktionscall "fkt_B(x,y)" aufrufen würdest, sollten die Variablen korrekt übergeben werden.

    Aber: Du rufst stattdessen die URL "javascript:fkt_B(x,y)" über die Location des 2. Frames auf, was sozusagen einen "Neuanfang" darstellt. Das heißt, daß die Variablen x, y dann nicht bekannt sind, weil der Aufruf nicht aus fkt_A heraus erfolgte.

    Alternative: Schreib die Inhalte von x, y explizit in die URL hinein. Das müßte imho (hab's nicht getestet) bereits so funktionieren:

    location.href="javascript:funktion(" + x + "," + y + ")";

    Falls jetzt z.B. x=47 und y=11 war, dann wird eine URL namens  "javascript:funktion(47,11)" aufgerufen.

    Viele Grüße

    Andreas

    1. Hallo Andreas!

      Erstmal besten Dank fürs antworten! nette sache :)

      hm... ich tippe mal auf folgendes Problem. Du hast zwei Frames mit jeweils einer Funktion. Sagen wir - die Funktion im ersten Frame sei fkt_A(x,y) und die im 2. Frame sei fkt_B(x,y).

      ja genau...so kannst du dir das denken :)

      Nun bist Du in fkt_A im ersten Frame, und die Variablen x und y sind bekannt. Wenn Du also die andere Funktion direkt über einen Funktionscall "fkt_B(x,y)" aufrufen würdest, sollten die Variablen korrekt übergeben werden.

      hm...aber ich muss doch einen javascript aufruf in ein anderes frame mit hilfe von 'location.href' machen, oder? gibts da denn noch ne andere, ne direkte alternative?

      Aber: Du rufst stattdessen die URL "javascript:fkt_B(x,y)" über die Location des 2. Frames auf, was sozusagen einen "Neuanfang" darstellt. Das heißt, daß die Variablen x, y dann nicht bekannt sind, weil der Aufruf nicht aus fkt_A heraus erfolgte.

      hm, ja und nein. der aufruf erfolgt durchaus aus der fkt_A, aber mittels parent.2tesframe.location.href eben.
      die fkt_A sieht also circa so aus:

      function fkt_A(x,y)
      {
      parent.2tesframe.location.href="javascript:fkt_B(x,y)";
      }

      Alternative: Schreib die Inhalte von x, y explizit in die URL hinein. Das müßte imho (hab's nicht getestet) bereits so funktionieren:

      location.href="javascript:funktion(" + x + "," + y + ")";

      nein, das geht leider auch nicht...auf die idee bin ich auch schon gekommen :) dubioserweise kommt dann zwar der variableninhalt an, er sagt aber wenn der inhalt der variable 'test' war, das 'test' nicht definiert sei, so als ob er eine variable mit dem namen sucht. *?*

      hm....ich weiss da echt nicht weiter, vielleicht fällt Dir da noch was ein?

      Vielen dank schonmal für deine mühe, marco

      1. Hallo!

        location.href="javascript:funktion(" + x + "," + y + ")";

        nein, das geht leider auch nicht...auf die idee bin ich auch schon gekommen :) dubioserweise kommt dann zwar der variableninhalt an, er sagt aber wenn der inhalt der variable 'test' war, das 'test' nicht definiert sei, so als ob er eine variable mit dem namen sucht. *?*

        Nun... ich dachte natürlich, daß in x, y irgendwelche Zahlen drinstehen (wieso eigentlich...?! <g>). Also nehmen wir eben an, daß in x der String "Test" drinsteht. Dann wird durch...

        location.href="javascript:funktion("+x+")";

        ...der Aufruf 'javascript:funktion(test)' generiert. Damit wird 'test' tatsächlich wie eine Variable interpretiert, die natürlich nicht vorhanden ist. Besser wäre daher ein Aufruf der Form 'javascript:funktion("test")'.
        Übertragen auf das ursprüngliche Problem hieße das also:

        ...location.href="javascript:funktion("" + x + "", "" + y + "");

        Viele Grüße

        Andreas

        1. He....vielen dank!

          Da war die korrekte syntax - auf sowas wär ich glaub nie gekommen :)

          Vielen dank nochmal, marco