Moosi: Aufruf einer Funktion mit variabler Argumenteliste

Tach,

ich steh momentan auf der Leitung und bitte um Hilfe.

Also ich habe eine funktion innerhalb der eine Argumenteliste die variabel lang sein soll in einer for-schleife zusammengebaut wird.

Was dabei rauskommt möchte ich als funktionsargument für den Aufruf einer anderen funktion verwenden. Ich hab erst versucht einen String zunehmen. Nachdem das nicht funktionierte habe ich ein array und ein Objekt mit Eigenschaften probiert. Aber immer kommt drüben anscheinend nur ein kommagetrennter String an und keine Einzelargumente die ich mit arguments[] auswerten könnte. Es gibt also nur arguments[0], wo alles drinnen steht!

Mit der Bitte um Ideen

Moosi

  1. Moin,
    Ich habe dunkel sowas in Erinnerung, das ich das Problem auch einst hatte, und an einer "sauberen, intelligenten" Lösung kläglich gescheitert bin.

    Soviel ich weiss, habe ichs damals mit Eval gemacht:

    var commandstring = "func(";
    for (var i = 0; i < 5; i++) {
       commandstring += i+',';
    }
    commandstring += ')';

    eval(commandstring);

    function func () {
       for (var argument = 0; argument < func.arguments.length;
       argument++) {
          ...
       }
    }

    oder so ähnlich.

    Aber wie man hier so schön sagt
    "Schee is anderscht"

    Gruesse,
    Joerg

    1. gruss Joerg, hallo Moosi,

      Ich habe dunkel sowas in Erinnerung, das ich das Problem auch einst hatte,
      und an einer "sauberen, intelligenten" Lösung kläglich gescheitert bin.

      Soviel ich weiss, habe ichs damals mit Eval gemacht:

      *reusper*

      Aber wie man hier so schön sagt
      "Schee is anderscht"

      und ideal und damit auch "schee" sind in diesem fall die
          fuer "Function"-objekte standardmaessig verfuegbaren
          methoden "apply" bzw. "call"  -  eine umfassendere
          antwort mit beispielen steht schon im archiv unter:

      http://forum.de.selfhtml.org/archiv/2004/8/t88305/#m526417

      by(t)e by(t)e - peterS. - pseliger@gmx.net

      --
      ie:( fl:) br:> va:| ls:& rl:| n4:} ss:} de:µ js:} zu:]
  2. Привет Moosi.

    Also ich habe eine funktion innerhalb der eine Argumenteliste die variabel lang sein soll in einer for-schleife zusammengebaut wird.

    In welcher Form?

    Was dabei rauskommt möchte ich als funktionsargument für den Aufruf einer anderen funktion verwenden. Ich hab erst versucht einen String zunehmen. Nachdem das nicht funktionierte habe ich ein array und ein Objekt mit Eigenschaften probiert. Aber immer kommt drüben anscheinend nur ein kommagetrennter String an und keine Einzelargumente die ich mit arguments[] auswerten könnte. Es gibt also nur arguments[0], wo alles drinnen steht!

    Wenn du so eine Funktion hast:

    function argumente() {
      alert(argumente.arguments.length);
    }

    kannst du ihr alles übergeben, was dir in den Sinn kommt: Strings, Objekte usw., ggf. auch mehrere davon oder typengemischt. Der Fehler muss also woanders liegen, ein wenig Quelltext wäre also hilfreich.

    Дружба!
    Siechfred

    --
    Hinweis an alle Karnevalsmuffel: Aschermittwoch ist alles vorbei.
    1. hallo Moosi,

      du kannst doch innerhalb deiner funktion die die argumente bildet diese in an array schreiben.

      function fu() {     var param = [];

      for (var i = 0; i < 10; i++)         param[i] = i;

      fu_2(param); }

      in der fu_2 greifst du dann mit

      for (var i = 0; arguments[0].length; i++)     alert(arguments[0][i]);

      auf die einzelnen parameter zu.

      ich persönlich habe mir immer angewöhnt an funktion nur noch arrays zu übergeben.

      gruss LenaLuna