timmy_: Zum verständnis

Hi leute,

hier mal der Code^^:

  
  
function klicker()  
 {  
   alert("test");  
  
 }  
  
document.onmousedown=klicker;  
  

Wieso darf ich bei document.onmousedown=klicker; die klammern () nicht mitangeben? normalerweise ist das doch üblich? wenn ich die mitangebe tut sich nix.

Danke für eine antwort

  1. Hallo timmy_.

    function klicker()
    {
       alert("test");

    }

    document.onmousedown=klicker;

    
    >   
    > Wieso darf ich bei document.onmousedown=klicker; die klammern () nicht mitangeben?  
      
    [Deshalb](http://forum.de.selfhtml.org/archiv/2006/8/t134355/#m871525). (Der gesamte Thread ist für dich interessant.)  
      
    
    > wenn ich die mitangebe tut sich nix.  
      
    Doch, durchaus.  
      
      
    Einen schönen Dienstag noch.  
      
    Gruß, Mathias  
    
    -- 
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|  
      
    debian/rules
    
    1. Wäre denn return false; "im Funktionskörper" keine Lösung?

      --
      __________________________-
      Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
      1. hi,

        Wäre denn return false; "im Funktionskörper" keine Lösung?

        (Für welches Problem denn eigentlich?)

        Der Grund, warum beim dynamischen Zuweisen eines Eventhandlers nur
        onxyz = funktionsname
        und nicht
        onxyz = funktionsname()
        ist schlicht und einfach der, dass letzteres die Funktion zu dem Zeitpunkt, wo diese Anweisung abgearbeitet wird, aufrufen würde.
        Das ist aber (idR.) gar nicht gewollt.
        Was stattdessen gewollt ist, ist dem Eventhandler die Funktions_referenz_ zuzuweisen - und die wird nun mal mit funktionsname addressiert. (Auch Funktionen sind in Javascript Objekte, und Objekte behandelt Javascript immer per Referenz.)

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. n'abend,

        Wäre denn return false; "im Funktionskörper" keine Lösung?

        nein.

        Hast du den verlinkten Thread denn überhaupt gelesen?

        Wir deklarieren eine Funktion:

        function eineFunktion()  
        {  
          alert( "ich bin die Funktion eineFunktion() und wurde gerade ausgeführt" );  
        }
        

        wir können nun auf diese Funktion zugreifen:

         // wir führen die Funktion aus:  
        eineFunktion();  
          
        // wir geben der funktion einen anderen Namen:  
        var andereFunktion = eineFunktion;  
          
        // wir führen die funktion mit neuem Namen aus:  
        andereFunktion();  
        
        

        Wie wir im Beispiel erkennen können, müssen wir runde Klammern an den Funktionsnamen hängen, wenn wir die Funktion ausführen wollen. Wollen wir die Funktion aber lediglich "umbenennen", so lassen wir die Klammern weg. Schliesslich wollen wir die Funktion ansich zuweisen und nicht das, was die Funktion evtl. zurück gibt.

        Im Beispiel ist von umbebnennen die Rede. Eigentlich machen wir nichts anderes, als dem Objekt andereFunktion eine Referenz auf das Objekt eineFunktion zu verpassen. Wie jetzt? eineFunktion ist doch eine Funktion und kein Objekt? falsch! eineFunktion ist tatsächlich ein Objekt, welches übrigens genau so verschoben, kopiert, zugewiesen und gelöscht werden kann, wie alle anderen Objekte auch.

        weiterhin schönen abend...

        --
        wer braucht schon großbuchstaben?
        sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|