Udo: Argumente an eine Funktion übergeben

Hey Leute,
brauche eine Hilfe bez. Argumentübergabe an Funktion in Javascript.

Hab ne Funktion, die folgendermaßen Werte entgegen nimmt:
initializetabcontent("tab1", "tab2", "tab3", ...)

Wenn ich nun versuche, die Werte dynamisch einer Variablen oder einem Array zu zuweisen, dann nimmt die Funktion sie nicht, bzw. nur teilweise an...

Folgende Konstruktionen habe ich bisher versucht:
  var mytabcontent = "tab1, ";
  ...
  mytabcontent = mytabcontent + "tab2, tab3";
  ...
  initializetabcontent(mytabcontent)
Funktioniert nicht...

var mytabcontent = ""tab1, "";
  ...
  mytabcontent = mytabcontent + ""tab2", "tab3"";
  ...
  initializetabcontent(mytabcontent)
geht auch nicht...

var mytabcontent = new Array("tab1");
  ...
  mytabcontent[mytabcontent.length] = "tab2";
  mytabcontent[mytabcontent.length] = "tab3";
  ...
  initializetabcontent(mytabcontent)
  ...
klappt auch nicht, ... was tun?

Der Aufbau von initializetabcontent() sieht in etwa so aus:
  function initializetabcontent(){
  for (var i=0; i<arguments.length; i++){//loop through passed UL ids
  ...
  }
  }
Die Funktion initializetabcontent
findest du komplett hier:
http://www.dynamicdrive.com/dynamicindex17/tabcontent/tabcontent.js

Hat jemand Ahnung?!

Schöne Grüße Udo

  1. Hey,

    du versuchst, einen String zu übergeben. Das sollte klappen, aber er ist nur EIN Parameter. In der Funktion musst du ihn dann auseinandernehmen.

    Oder du übergibst ein Array, das kommt deinem Konzept am Nächsten.

    Gruß, Kalle

    1. Hey,
      du versuchst, einen String zu übergeben. Das sollte klappen, aber er ist nur EIN Parameter. In der Funktion musst du ihn dann auseinandernehmen.

      Nee, in der Funktion möchte ich nicht rumfuhwerken, wegen möglicher späterer updates...

      Oder du übergibst ein Array, das kommt deinem Konzept am Nächsten.

      Das hab ich ja versucht, hat aber nicht funktioniert... hast du eine Idee, was ich konkret ausprobieren kann?

      Schöne Grüße Udo

  2. Hab ne Funktion, die folgendermaßen Werte entgegen nimmt:
    initializetabcontent("tab1", "tab2", "tab3", ...)

    Wenn ich nun versuche, die Werte dynamisch einer Variablen oder einem Array zu zuweisen, dann nimmt die Funktion sie nicht, bzw. nur teilweise an...

    Das geht so nicht, ich weiß zwar nicht warum du es so machen willst, aber wenn du es unbedingt so machen willst hilft dir nur eval() weiter.

    Folgende Konstruktionen habe ich bisher versucht:
      var mytabcontent = "tab1, ";
      ...
      mytabcontent = mytabcontent + "tab2, tab3";
      ...
      initializetabcontent(mytabcontent)
    Funktioniert nicht...

    mytabcontent ist auch nur ein String, denn du in der Funktion splitten müßtest.

    var mytabcontent = ""tab1, "";
      ...
      mytabcontent = mytabcontent + ""tab2", "tab3"";
      ...
      initializetabcontent(mytabcontent)
    geht auch nicht...

    Warum auch

    var mytabcontent = new Array("tab1");
      ...
      mytabcontent[mytabcontent.length] = "tab2";
      mytabcontent[mytabcontent.length] = "tab3";
      ...
      initializetabcontent(mytabcontent)
      ...
    klappt auch nicht, ... was tun?

    so hast du nur einen Parameter, der Ein Array ist, dann müßte die Funktion auf arguments[0] zugreifen, darin sind dann alle Parameter.

    Der Aufbau von initializetabcontent() sieht in etwa so aus:
      function initializetabcontent(){
      for (var i=0; i<arguments.length; i++){//loop through passed UL ids

    ich würd eher hier ansetzen und die Parameterauswertung anpassen.

    http://www.dynamicdrive.com/dynamicindex17/tabcontent/tabcontent.js

    schöner unleserlicher Quellcode, den guck ich mir jetzt nicht.

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. Hi Struppi,

      Das geht so nicht, ich weiß zwar nicht warum du es so machen willst, aber wenn du es unbedingt so machen willst hilft dir nur eval() weiter.

      Das schau ich mir gleich mal an... Danke!

      Folgende Konstruktionen habe ich bisher versucht:
        var mytabcontent = "tab1, ";
        ...
        mytabcontent = mytabcontent + "tab2, tab3";
        ...
        initializetabcontent(mytabcontent)
      Funktioniert nicht...
      mytabcontent ist auch nur ein String, denn du in der Funktion splitten müßtest.

      Die Funktion würde ich selbst nur sehr ungern ändern, weil damit die Kompatibilität zu updates flöten geht...

      var mytabcontent = ""tab1, "";
        ...
        mytabcontent = mytabcontent + ""tab2", "tab3"";
        ...
        initializetabcontent(mytabcontent)
      geht auch nicht...
      Warum auch

      Ganz einfach, weil ich keine Ahnung von javascript habe ;-)

      var mytabcontent = new Array("tab1");
        ...
        mytabcontent[mytabcontent.length] = "tab2";
        mytabcontent[mytabcontent.length] = "tab3";
        ...
        initializetabcontent(mytabcontent)
        ...
      klappt auch nicht, ... was tun?
      so hast du nur einen Parameter, der Ein Array ist, dann müßte die Funktion auf arguments[0] zugreifen, darin sind dann alle Parameter.

      Ja, schade...

      function initializetabcontent(){
        for (var i=0; i<arguments.length; i++){//loop through passed UL ids
      ich würd eher hier ansetzen und die Parameterauswertung anpassen.

      Würde ich nur sehr ungern machen, s.o.

      »http://www.dynamicdrive.com/dynamicindex17/tabcontent/tabcontent.js

      schöner unleserlicher Quellcode, den guck ich mir jetzt nicht.

      Ich versuch erst gar nicht hinter die API zu schauen, weil kaum Ahnung...

      Vielen Dank und schöne Grüße Udo

      1. Das geht so nicht, ich weiß zwar nicht warum du es so machen willst, aber wenn du es unbedingt so machen willst hilft dir nur eval() weiter.
        Das schau ich mir gleich mal an... Danke!

        Dann kommt der erste Ansatz der Sache am nächsten.

        Folgende Konstruktionen habe ich bisher versucht:
          var mytabcontent = "tab1, ";
          ...
          mytabcontent = mytabcontent + "tab2, tab3";
          ...
          initializetabcontent(mytabcontent)

        du kannst natürlich auch ein Array benutzen und dann mit join verknüpfen:

        my param = [];  
          
        param.push( 'tab1' ) ;  
        param.push( 'tab2' ) ;  
        param.push( 'tab3' ) ;  
        ...  
          
        my eval_string = 'initializetabcontent(' +  
        param.join(',') + ')';  
        eval( eval_string );  
        
        

        (ungetestet)

        Struppi.

        --
        Javascript ist toll (Perl auch!)
        1. Hallo Struppi,

          klasse, mit einer kleinen Modifikation und etwas perl2js funktionierts!

          du kannst natürlich auch ein Array benutzen und dann mit join verknüpfen:

            
          
          > my param = [];  
          
          var param =[];  
            
          
          > param.push( 'tab1' ) ;  
          > param.push( 'tab2' ) ;  
          > param.push( 'tab3' ) ;  
          > ...  
          >   
          > my eval_string = 'initializetabcontent(' +  
          > param.join(',') + ')';  
          
          var eval_string = "initializetabcontent(\"" + param.join("\", \"") + "\")";  
            
          
          > eval( eval_string );  
          
          

          Vielen Dank und
          schöne Grüße Udo