string Teile einer Funktion in variable

  • Hallo Profis,


    ich hoffe ich bin hier im richtigen Unterforum.
    Meine Frage dreht sich um Javascript.


    Eine simple Sache, denke ich, die ich trotz googlen und lesen nicht hinbekomme :-(



    function blabla() {

    [INDENT]var comp = $.Edge.getComposition("animation_content"); [/INDENT]
    [INDENT]var stage = comp.getStage();
    stage.getSymbol("Stage")
    .$("NextChart").attr("src","templates/Chart_"+ e.data.suggestion +"/images/Chart.gif");[/INDENT]

    }


    Ich möchte nun den fett markierten Teil in einer globalen Variable verstauen, weil dieser Teil sich in mehreren Funktion stets wiederholt
    und ich den code etwas schlanker machen will.


    Sollte also darauf hinauslaufen:[INDENT]var animation = "var comp = $.Edge.getComposition("animation_content"); [/INDENT]
    [INDENT=4]var stage = comp.getStage();
    [/INDENT]
    [INDENT=4]stage.getSymbol("Stage")"[/INDENT]


    function blabla() {

    [INDENT]animation.$("NextChart").attr("src","templates/Chart_"+ e.data.suggestion +"/images/Chart.gif");[/INDENT]

    }



    Damit ich mich verständlich mache: es soll da kein Wert auftauchen (denn der liegt bei der Variablendefinition am Anfang noch nicht fest),
    sondern nur stupide der gesamte string (der dann dort die enthaltenen Variablen definiert) in der jeweiligen Funktion eingesetzt werden.


    Ich habe aber Probleme mit den Anführungsstrichen oder ähnliches, schätze ich.


    Wie bekomme ich das hin?
    Bin sicher es gibt einen einfachen Clou.


    Danke!
    Garavani

  • also agierst du in einem plugin oder in einem "normalen" script oder in einem modul?


    du kannst dir das vorstellen, wie kisten, die du in kisten stapelst und die größte davon ist das window.


    wenn du eine varibale nicht mir var deklarierst,landet diese automatisch in diesem window.objekt und kann dann direkt über den namen oder window.VARIABLENNAME angesteuert werden.


    ansonsten musste dir das so vorstellen:
    wenn du in eine große kiste 5 kleine kisten stellst und in jede dieser 5 kisten auch nochma 3 kisten kloppst, legst du deine varibable am besten in der großen kiste ab.


    wenn ich dir des jetzt als code poste, wirste es eh nicht verstehen, das wär dann mit closures, objektliteralen und den dazugehörigen scopes.


    zu dienem beispiel:

    Code
    1. [INDENT]var animation = "[B]var comp = $.Edge.getComposition("animation_content"); [/B][/INDENT]
    2. [INDENT=4][B]var stage = comp.getStage();
    3. [/B][/INDENT]
    4. [INDENT=4][B]stage.getSymbol("Stage")"[/B]
    5. [/INDENT]


    das is totaler murks du kannst dein konstrukt nicht so in einer variablen speichern
    du hast dort ja 2 elemente comp und stage. getSymbol is da ja nur eine eigenschaft (bzw eine funktion als eigenschaft)

  • Hallo Synaptic,


    doch ich verstehe schon, denke ich ;-)


    Ich muss also den code-snippet immer wiederholen wenn ich ihn brauche (so wie ich es jetzt schon tue)
    Habe nur einen Weg gesucht das skript schlanker zu machen.


    Danke für Deine Ausführungen jedenfalls!


    Gruß
    Garavani