Variablenfunktionen in JavaScript

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von koli.bri, 02.02.2007.

  1. koli.bri

    koli.bri Thread Starter Gast

    Hallo ihr fleißigen Scriptersleut'

    Ich hab vor kurzem die Variablenfunktionen von PHP kennengelernt.
    Geniale Sache, wie ich finde.

    Doch gibt es etwas vergleichbares auch für JavaScript? In SelfHTML und vie Google hab ich nichts gefunden...

    Hintergrund der Geschichte:
    In meinem derzeitigem Projekt tauchen eine Menge http-Requests auf.
    der Requestfunktion in JavaScript wird dabei immer noch der Name der Funktion mitgegeben,

    PHP:
    function macheRequest(url,handle_funktion){
    /*
     *  Requestkram
     */
     
    switch(handle_funktion){
      case 
    "ladebildnach":
        
    handle_ladebildnach(http_request.responseText);
      break;
      case 
    "speicherindb":
        
    handle_speicherindb(http_request.responseText);
      break;
    /*
     *
     */

     
    }
    }

    funktion handle_ladebildnach(vari){
    // Anzeigen des Bilds
    }

    function 
    handle_speicherindb(vari){
    // Rückmeldung geben
    }
    Ideal wäre ja sowas wie
    PHP:
    function macheRequest(url,handle_funktion){
    /*
     *  Requestkram
     */

      
    handle_funktion(http_request.ResponseText);

    /*
     *
     */

     
    }
    }
    Also, gibt es außer einer EVAL()-Lösung etwas?

    gruß
    Lukas
     
    Zuletzt von einem Moderator bearbeitet: 13.02.2007
  2. der_Kay

    der_Kay MacUser Mitglied

    Beiträge:
    1.693
    Zustimmungen:
    7
    MacUser seit:
    02.09.2004
    Ja, gibt es. "Impliziter Funktionsaufruf" und "Assoziative Arrays mit Objekten" sind die Stichworte:
    Extending JavaScript with Function Pointers
    Simulierte assoziative Arrays in JavaScript

    PHP:
    <html>
    <
    head>
    <
    script type="text/javascript">
    function 
    sag_hallo () 

        
    document.forms['form0'].elements['label'].value="Hallo";     
    }

    function 
    sag_ciao () 

        
    document.forms['form0'].elements['label'].value="Ciao"
    }

    var 
    func_array = new Array();
    func_array ['Hallo']=sag_hallo;
    func_array ['Ciao']=sag_ciao;

    function 
    choose_function_by_string function_name_as_a_string )
    {
        var 
    func_pointer func_array[function_name_as_a_string];
        if ( 
    undefined != func_pointer )
            
    func_pointer();    
        else
            
    alert ("Funktion \""
                
    function_name_as_a_string 
                
    +"\" gibt es nicht!");
    }
    </script>
    </head>

    <body>

    <a href="javascript:choose_function_by_string('Hallo')">Rufe &quot;sag_hallo()&quot; auf</a>
    <br>
    <a href="javascript:choose_function_by_string('Ciao')">Rufe &quot;sag_ciao() &quot; auf</a>
    <br>
    <a href="javascript:choose_function_by_string('Quark')">Rufe &quot;quark()&quot; auf</a>
    <br>&nbsp;
    <form name="form0">
    <input type="text" name="label" length="80">
    </form>
    </body>
    </html>
    p.s.: Die JavaScript-EventHandler funktionieren alle so.
     
    Zuletzt bearbeitet: 13.02.2007
  3. koli.bri

    koli.bri Thread Starter Gast

    Wenn auch was spät:
    Vielen lieben Dank dafür! :D
    Funktioniert Tadellos und einfach isses auch, wenn man es verstanden hat!

    gruß
    Lukas
     
Die Seite wird geladen...

Diese Seite empfehlen