jbs: Funktion in Funktion aufrufen

Hallo,

Angenommen ich habe eine Funktion

function oberfunktion (ID) {  
document.getElementbyID(ID).onclick.funktion1();  
document.getElementbyID(ID).onmouseover.funktion2();  
document.getElementbyID(ID).onmouseover.funktion3();  
}  

Wo muss ich die oberfunktion aufrufen, damit die unterfunktionen bei den Jeweiligen ereignisse aufgerufen werden, oder funktioniert das grundsätzlich nicht so wie ich mir das vorstelle?

MfG
JBS

  1. Hallo,

    Wo muss ich die oberfunktion aufrufen, damit die unterfunktionen bei den Jeweiligen ereignisse aufgerufen werden, oder funktioniert das grundsätzlich nicht so wie ich mir das vorstelle?

    grundsätzlich irgendwo im Fluss des programms, z.b. direkt danach.

    function oberfunktion (ID) {

    document.getElementbyID(ID).onclick.funktion1();
    document.getElementbyID(ID).onmouseover.funktion2();
    document.getElementbyID(ID).onmouseover.funktion3();
    }

      
    Das scheint mir die Falsche herangehensweise zu sein. Warscheinlich meinst du eher etwas wie:  
      
    ~~~javascript
    function oberfunktion (ID) {  
        document.getElementbyID(ID).onclick = funktion1;  
        document.getElementbyID(ID).onmouseover = funktion2;  
        document.getElementbyID(ID).onmouseover = funktion3;  
    }  
      
    window.onload = function() {  
        oberfunktion("test");  
    }
    

    Wäre die einfache Variante (die aber alle eventuellen vorheringen onload funktionen überschreibt), natürlich müssen funktion1 usw. schon vorher auch definiert sein. Was man grundsätzlich macht ist dass man z.b. dem onclick eine Funktion zuweist die der browser dann aufruft falls der Event passiert.

    Es würde jetzt etwas zu weit gehen das hier Schritt für Schritt zu erklären aber ich empfehle dir mal das Kapitel dazu in Molilys JavaScript Einführung durchzulesen: JavaScript: Grundlagen zur Ereignisverarbeitung - Traditionelles Eventhandling.

    Falls danach noch Fragen auftauchen sollten kannst du sie sehr gerne hier wieder stellen aber ich hoffe das hilft dir schon mal weiter :-)

    Jeena

    1. @@Jeena Paradies:

      nuqneH

      ich empfehle dir mal das Kapitel dazu in Molilys JavaScript Einführung durchzulesen: JavaScript: Grundlagen zur Ereignisverarbeitung - Traditionelles Eventhandling.

      Ich empfehle eher das Kapitel Fortgeschrittene Ereignisverarbeitung.

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
      1. Hallo,

        Ich empfehle eher das Kapitel Fortgeschrittene Ereignisverarbeitung.

        Da er/sie aber offensichtlich nicht mit den Grundlagen klarkommt sollte man es mit den fortgeschrittenen Sachen vielleicht erst mal langsam angehen, das überfordert die Leute leider meist.

        Jeena

  2. @@jbs:

    nuqneH

    Angenommen ich habe eine Funktion

    function oberfunktion (ID) {

    document.getElementbyID(ID).onclick.funktion1();
    document.getElementbyID(ID).onmouseover.funktion2();
    document.getElementbyID(ID).onmouseover.funktion3();
    }

      
    Die JavaScript-Engine muss dreimal dasselbe Element im DOM suchen\*; das ist unsinnig.  
      
    Entweder du übergibst nicht die ID, sondern das Elementobjekt an die Funktion:  
      
    ~~~javascript
    function oberfunktion(element) {  
      element.onclick.funktion1();  
      element.onmouseover.funktion2();  
      element.onmouseover.funktion3();  
    }
    

    (Aufruf bspw. oberfunktion(document.getElementbyID(ID));)

    oder in der Funktion wird einmal nach dem Element gesucht und die gefundene Referenz in einer Variablen gespeichert:

    function oberfunktion(ID) {  
      var element = document.getElementbyID(ID)  
      element.onclick.funktion1();  
      element.onmouseover.funktion2();  
      element.onmouseover.funktion3();  
    }
    

    Außerdem solltest du nicht onclick etc. verwenden (und damit schon möglicherweise registrierte Eventhandler überschreiben), sondern addEventListener (und IE-Pendant). [molily]

    Qapla'

    * wenn sie das nicht optimiert, wovon ich nicht ausgehen würde

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Hallo,

      Was soll eigentlich das heir machen?

      element.onclick.funktion1();

      Und warum hast du das so belassen wenn es (zumindest für mich) offensichtlich ist dass das nicht das machen wird was der OP will dass es tut?

      Jeena