technoprog_s: mit Javascript dynamisch javascript function erstellen (wie)!

Hi hab folgende situation, ich ruf mehtode 1 auf

add("eineNeuFunction");

-------------

function add(name)
{
 //neue function erstellen die den übergeben namen hat
 //also z.B.:
 //function eineNeuFunction(){ alert('Ich bin die neue Function!'); }
 //und dann im code verfügbar machen
}

so mein problem ist jetzt folgendes document.write geht nicht da dan alles ja überschrieben wird, hab auch schon probiert

document.body.innerHTML+="<script type="text/javascript" id="DynJS">function echo(){ alert('es klappt');  }</script>";

geht auch nicht, er macht es zwar, aber ich kann die methode aus einen einbetteten iframe mit parent.echo() nicht aufrufen sagt er findet die methode nicht.

hab auch scho versucht mit den html tag '<script type="text/javascript" id="DynJS"></script>'
das script feld über die id anzusprechen, das geht zwar aber wenn ich xyz.innerHTML+="function echo(){ alert('es klappt');  }" mach knallt es wieder!

jetzt weis ich nimmer weiter hab auch scho ne stunde im web mit google gesucht aber nix gefunden.

  1. Hi

    wie wärs mit

    f= new Function("arg1",...,"Body");

    Tschau
     LanX

    1. Hi

      wie wärs mit

      f= new Function("arg1",...,"Body");

      Tschau
      LanX

      Hi das haut net hin da ich ja in nen string den namen übergeben bekomme,
      und wie häng ich des ganze dan in meiner seite ein??
      kann ja schlecht in einer function ne neue function anlegen ^^

      also nochmal ich weis wie ma methoden etc anlegt, was ich möchte ist eine
      methode dynamisch anlegen also in methode 1 eine neue methode zusammenbasteln
      und dies dann so auf meiner seite veröffentlichen, das sie aus einem
      eingebetteten frame aufrufbar ist

      1. Hi

        Hi das haut net hin da ich ja in nen string den namen übergeben bekomme,
        und wie häng ich des ganze dan in meiner seite ein??

        kugst tu: https://forum.selfhtml.org/?t=169465&m=1106860

        Tschau
         LanX

  2. Hallo,

    //neue function erstellen die den übergeben namen hat
    //also z.B.:
    //function eineNeuFunction(){ alert('Ich bin die neue Function!'); }
    //und dann im code verfügbar machen

    jetzt weis ich nimmer weiter hab auch scho ne stunde im web mit google gesucht aber nix gefunden.

    Hättest du nicht die große Spamhalde Google gefragt, sondern unter http://de.selfhtml.org/javascript/objekte/function.htm nachgeschaut, wärest du schneller zum Ziel gekommen :-)

    Funktionen sind in Javascript auch Objekte, können mit new erzeugt und in einer Variablen gelagert werden. Dein Wunsch lässt sich also ganz einfach realisieren:

    function neueFunktion(name, code) {
      document[name] = new Function(code);
    }

    Aufruf der neuen Funktion mit documentname, wobei in name wiederum der Funktionsname steht.

    Ist dir der Funktionsname schon beim Schreiben des Skriptes bekannt, kannst du ihn auch wie gewohnt direkt benutzen.

    function neueFunktion(code) {
      meineFunktion = new Function(code);
    }

    Aufruf dann wie üblich mit meineFunktion();.

    1. Hi

      function neueFunktion(name, code) {
        document[name] = new Function(code);
      }

      ähm window[name]= oder?

      Tschau
       LanX

      1. Hallo,

        function neueFunktion(name, code) {
          document[name] = new Function(code);
        }

        ähm window[name]= oder?

        Von mir aus auch das. Kommt darauf an, wo er seine Funktion benutzen will.

        Gruß, Hannes

        1. Hallo,

          Von mir aus auch das. Kommt darauf an, wo er seine Funktion benutzen will.

          ich steh wohl auf dem Schlauch, wo wird Aufruf func() zu Methode document.func() aufgelöst? Eventhandler???

          so long
           LanX

    2. function neueFunktion(name, code) {
        document[name] = new Function(code);
      }

      Aufruf der neuen Funktion mit documentname, wobei in name wiederum der Funktionsname steht.

      Hi das klappt leider so nicht da ich die methoden direkt ansprechen muss also per parent.xyz()

      da dies callback methoden sein werden, und das script was diese methoden
      aufruft kann ich nicht beeinflussen bedeutet am schluss muss aus dem iframe
      die methode xyz() über parent.xyz() aufrufbar sein.

      trotzdem danke (das mit der variable weis ich schon ^^)

      gruß technoprog_s

      1. Hi

        Hi das klappt leider so nicht da ich die methoden direkt ansprechen muss also per parent.xyz()

        ??? seufz ...

        parent[xyz]= etc etc

        Tschau
         LanX

        1. danke für die hilfe klappt wenn ich parent[xyz]=new function(){code} schreib.

          gruß pascal

      2. function neueFunktion(name, code) {
          document[name] = new Function(code);
        }

        Aufruf der neuen Funktion mit documentname, wobei in name wiederum der Funktionsname steht.

        Hi das klappt leider so nicht da ich die methoden direkt ansprechen muss also per parent.xyz()

        Geht auch, habe ich unsauber geschrieben. Ich bin davon ausgegangen, dass du den Namen nicht weißt.

        1. danke für die hilfe klappt wenn ich parent[xyz]=new function(){code} schreib.

          gruß pascal

          1. Hallo,

            klappt wenn ich parent[xyz]=new function(){code} schreib.

            Bestimmt nicht mit dem »new« dabei.

            Mathias