Raimar Tasche: event handler Funktionen dynamisch zuweisen

Hallo Leutz,

habe ein Problem.
Und zwar möchte ich einem HTML-Objekt, egal was für eines, dynamisch zuweisen, was bei einem event wie onclick oder onmouseover passieren soll.

Mal ein Beispiel:

Ich habe ein Bild auf meiner Seite.
<img ... blabla onmouseover="funktion_abc()">

Nun soll aber unter bestimmten Umständen, z.B. wenn ein Button gedrückt wird, eine Funktion aufgerufen werden, die die onmouseover-Eigenschaft des Bildes so manipuliert, dass

nicht funktion_abc()
sondern funktion_xyz()

bei onmouseover ausgeführt wird.

Wie kann ich dies per JavaScript ändern?

In C++ oder Delphi ist sowas ja ein Kinderspiel, aber in JavaScript hat es bei mir bis jetzt noch nicht funktioniert!

MfG
Raimar Tasche

  1. Hallo Raimar,

    Nun soll aber unter bestimmten Umständen, z.B. wenn ein
    Button gedrückt wird, eine Funktion aufgerufen werden, die
    die onmouseover-Eigenschaft des Bildes so manipuliert, dass

    nicht funktion_abc()
    sondern funktion_xyz()

    bei onmouseover ausgeführt wird.

    Wie kann ich dies per JavaScript ändern?

    if(document.captureEvents) {
      document.captureEvents(Event.NAME|Event.NAME2);
    }

    elementobject.onname = funktion;

    Naeheres siehe SELFHTML Objekt-Referenz von 'document' (http://selfhtml.teamone.de/javascript/objekte/document.htm).

    Gruesse,
     CK

    1. Hallo,

      ich hasse Eventprogrammiereung, eins der Dinge, bei denen ich mich weigere, es auswendig zu lernen.... Wie dem auch sei, nach der von Dir genannten Quelle aus selfhtml geht Deine Idee nur beim NS... was zumindest meiner Erinnerung entspricht, daß die großen Browser das arg unterschiedlich händeln.

      Nun gibts ja das wunderbare DOM2, und damit wäre es dem Fragesteller theoretisch möglich, an jedem Pixel des Bildschirmes (Rheinische Übertreibung) alternierende Evensts zu hängen.... wenn es dummerweise nicht den IE gäbe, der sich hier bei der dom2-Unterstützung etwas dämlich anstellt. (jaja, nicht nur hier....) Näheres gibts z.Bsp. hier zu lesen:

      http://www.brainjar.com/dhtml/events/default.asp

      (und folgende....)

      Chräcker

      1. Hallo Chräcker,

        Wie dem auch sei, nach der von Dir genannten Quelle aus
        selfhtml geht Deine Idee nur beim NS...

        Nee, ganz und gar nicht. 'document.captureEvents' ist beim
        NN4 notwendig, ja. Deshalb auch das if() drum rum. Aber der
        Rest geht im IE ab V. 4 und im Mozilla auch. Im Opera
        wahrscheinlich nur bedingt (kein Wunder) und im Konqueror gar
        nicht.

        was zumindest meiner Erinnerung entspricht, daß die großen
        Browser das arg unterschiedlich händeln.

        Das Event-Handling insgesamt ja. Diese eine Situation nicht.

        Gruesse,
         CK

        1. if(document.captureEvents) {
            document.captureEvents(Event.NAME|Event.NAME2);
          }

          elementobject.onname = funktion;

          Erstmal Ihnen beiden vielen Dank für die schnelle Antwort.
          Die event-Überwachung brauche ich eigentlich nicht.
          Habe jetzt einmal probiert, der onmouseover-Eigenschaft von bild1 die Funktion message() zuzuweisen. Leider ohne Erfolg. Beim mouseover wird die Funktion nicht ausgeführt!
          Hier einmal der verwendete Quelltext (Zuweisung):

          document.getElementById("bild1").onmouseover="message()";

          Mfg

          R.T.

          1. Hallo Raimar,

            Die event-Überwachung brauche ich eigentlich nicht.

            Wenn du damit 'captureEvents' brauchst, doch. Die brauchst
            du. Fuer den NN4.

            Hier einmal der verwendete Quelltext (Zuweisung):

            document.getElementById("bild1").onmouseover="message()";

            Das ist nicht dass, was ich schrieb. Ich schrieb:

            document.getElementById("bild1").onmouseover = message;

            Gruesse,
             CK

            1. Meine ganze Seite basiert auf JavaScript und daher ist die ganze Geschichte etwas komplexer.
              Um genau zu sein, muss ich der Funktion noch zwei Parameter (Strings) übergeben: 1. welches Bild die Funktion aufgerufen hat und 2. in welchem Status sich das Bild befindet (mouseover, mouseout), da die ganze Sache nämlich von EINER Funktion gesteuert wird.
              Und zwar handelt es sich um eine Navigations-Leiste mit 10 RollOver-Bildern, abhängig davon, ob die Maus "over" ist oder "out", wird ein anderes Bild angezeigt. Das ganze ist aber noch abhängig davon, ob der User sich gerade auf der Seite befindet, zu der der Link des Bildes führt. In dem Fall wird also wieder ein anderes Bild angezeigt. Also können mittels dem Bild vier Zustände angezeigt werden:
              1. auf der verlinkten Seite und mouseover,
              2. auf der verlinkten Seite und mouseout,
              3. nicht auf der verlinkten Seite und mouseover und
              4. nicht auf der verlinkten Seite und mouseout.
              Diese Dinge werden in der Funktion abgeprüft und die entsprechende Bild-URL wird der src-Eigenschaft des "Senders" zugewiesen!

              Daher ist es notwendig, dass ich auch Parameter übergeben kann!!

              Mfg
              R.T.

              1. Hallo Raimar,

                Daher ist es notwendig, dass ich auch Parameter übergeben
                kann!!

                Das kannst du vergessen. Das geht nicht.

                Gruesse,
                 CK