FraFu: element.onclick="functionname"

Hallo!

Wenn ich einem Element eine onclick Funktion anhängen möchte, dann geht das indem ich den Code:

element.onclick=funktionsname;

aufrufe.

Soweit so gut. Nur stehe ich jetzt vor dem Problem, dass der Funktionsname in einer Variablen steht. Damit funktioniert das nicht mehr.
Beispiel:

  
function meineFunktion(){  
   towas(...);  
}  
  
var rufeFunktion="meineFunktion"  
element.onclick=rufeFunktion;  
  

Das geht natürlich nicht.

Wie kann ich dem onclick Event des Elements element sagen, dass er die Funktion die in der Variablen rufeFunktion steht aufrufen soll?

mfg
  frafu

  1. hi,

    Wie kann ich dem onclick Event des Elements element sagen, dass er die Funktion die in der Variablen rufeFunktion steht aufrufen soll?

    Da Javascript OO-basiert ist, ist eine Funktion immer eine Methode eines Objektes. Funktionen im globalen Scope sind also Methoden des window-Objektes.

    alert("huhu") lässt sich also nicht nur so schreiben, sondern auch als window.alert("huhu"), oder eben auch als window"alert".

    Und da, wo in window["alert"] ein Textliteral steht, kannst du natürlich auch eine Variable einsetzen, die diesen Text enthält.

    Für deinen Fall heisst das also:

      
    var rufeFunktion="meineFunktion"  
    element.onclick=window[rufeFunktion];  
    
    

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo!

      Für deinen Fall heisst das also:

      var rufeFunktion="meineFunktion"
      element.onclick=window[rufeFunktion];

        
      Danke für die hilfreiche Beschreibung! Funktioniert und wieder was dazugelernt!  
        
      mfg  
        frafu
      
  2. Beispiel:

    function meineFunktion(){
       towas(...);
    }

    var rufeFunktion="meineFunktion"
    element.onclick=rufeFunktion;

    
    >   
    > Das geht natürlich nicht.  
      
    Ergänzend zu wahsaga, es kommt darüber hinaus darauf an in welchem Gültigkeitsbereich deine Funktionen deklariert sind, ist diese lokal dann funktioniert window[rufeFunktion] nicht mehr.  
      
    Dann müsste man Wissen in welchne Kontext diese deklariert sind. Ist es eine Objektfunktion geht object[rufeFunktion], ist es eine lokale Variabel geht nur noch eval(), was man aber besser vermeidet, z.b. in dem du einen Hash anlegst:  
      
    var Funktionen = {  
    sub\_1: function() { ....},  
    sub\_2: function() { ....}  
    }  
      
    Dann geht wieder, Funktionen[rufeFunktion]()  
      
    Struppi.
    
    -- 
    [Javascript ist toll](http://javascript.jstruebig.de/) (Perl auch!)