event handler Funktionen dynamisch zuweisen
Raimar Tasche
- javascript
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
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, dassnicht 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
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
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
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.
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
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.
Hallo Raimar,
Daher ist es notwendig, dass ich auch Parameter übergeben
kann!!
Das kannst du vergessen. Das geht nicht.
Gruesse,
CK