Problem beim dynamischen Austausch des onMouseOver-Events
fl0
- javascript
Hallo Forum!
Ich habe ein Problem beim dynamischen Austausch von Rollover-Ereignissen. folgende Codezeile sollte eigentlich ein Rollover-Event fuer das angegebene Bild erzeugen.
Leider wird aber nach dem Ladevorgang sofort das AlertFenster angezeigt. Danach erscheint es nicht mehr, auch nicht beim MouseOver des entsprechenden Bildes. Kennt jemand dieses Problem? Wuerde mich sehr ueber Hilfe freuen...
function puthearts(){
for (i=0; i<hearts.length; i++){
var imgname=hearts[i][1];
document.images[imgname].onmouseover = alert('Test');
document.images[imgname].src="images/calendar_heart.gif";
}
}
<body onLoad="puthearts();"...
hearts ist das array dass die Namen der auszutauschenden Bilder enthaelt...
Der Bildaustausch in Zeile 5 klappt uebrigens einwandfrei...
Gruesse!
fl0.
Ich habe ein Problem beim dynamischen Austausch von Rollover-Ereignissen. folgende Codezeile sollte eigentlich ein Rollover-Event fuer das angegebene Bild erzeugen.
Nein sollte es nicht.
Leider wird aber nach dem Ladevorgang sofort das AlertFenster angezeigt. Danach erscheint es nicht mehr, auch nicht beim MouseOver des entsprechenden Bildes. Kennt jemand dieses Problem? Wuerde mich sehr ueber Hilfe freuen...
Naja, du rufst alert auf und weist den Rückgabewert von alert() dem mouseover Ereignis zu (ist undefiniert). Du musst dem ereigniss eine Funktionsreferenz zuweisen.
Entweder:
object.onmousover = F1;
function F1()
{
alert(this.src);
}
oder
object.onmousover = function()
{
alert(this.src);
}
Struppi.
Danke Struppi, ABER :o)
...warum passiert hier dann genau das selbe?
function popbox(){
alert('TEEEST');
}
document.images[imgname].onMouseover = popbox();
...warum passiert hier dann genau das selbe?
Was dasselbe?
function popbox(){
alert('TEEEST');
}document.images[imgname].onMouseover = popbox();
Du rufst hier die Funktion popbox auf und übergibtst den Rückgabewert an den Ereignishandler.
Um dir das klarzumachen:
var ref = popbox;
var type = typeof popbox;
var wert = popbox();
alert('Ref:' + ref + '\nType:' + type + '\nwert:'+ wert);
Struppi.
Okay, es hat ne Weile gebraucht, aber ich habs verstanden... danke fuer das nette LernSkript :o)
ABER *lach*!! Ich steh wohl aufm Schlauch, ich versteh noch immer nicht, wie ich mein Skript jetzt dazu kriege, zu tun, was es tun soll. Irgendwo hab ich noch nen Knoten im Kopf...
WAS mus ich denn nun dem EventHandler zuweisen, damit er was TUT ?
Ich will doch nur ne simple Rollover-Funktion *wimmer*
Hoffenltich hast noch Lust... Danke auf jedenfall schonmal bis hier!
Gruesse
fl0.
ABER *lach*!! Ich steh wohl aufm Schlauch, ich versteh noch immer nicht, wie ich mein Skript jetzt dazu kriege, zu tun, was es tun soll. Irgendwo hab ich noch nen Knoten im Kopf...
WAS mus ich denn nun dem EventHandler zuweisen, damit er was TUT ?
Der eventhandler will eine refrenz auf eine Funktion, damit 'er' weiß was er tun muss in dem Moment wo der Evenet eintritt.
object.onmouseover = ref;
D.h. bei einem mousover wird ref() aufgerufen.
Du kannst das selber probieren:
function test(func)
{
if(typeof func == 'function') func();
}
test(ref);
Mit den Wert aus dem vorherigen Beispiel.
Ich will doch nur ne simple Rollover-Funktion *wimmer*
Hoffenltich hast noch Lust... Danke auf jedenfall schonmal bis hier!
auf meiner Seite ist eins, wo du kein Stück JS selber schreiben musst.
Struppi.
Hey Struppi...
Ich glaub schon dass ichs verstanden hab, werd mich mal auf Fehlersuche in anderen Teil;en der SIte begeben... auf jeden Fall hab ich wiede rmal was gelernt, dafuer vielen vielen Dank! Naja und fuer die Geduld natuerlich...
Schoenen Tag noch wuensch ich dir und... naja... vielleicht bis bald :)
Gruesslein
fl0.
Okay. Jetzt dooch ncohmal. Habs begriffen. Ein letztes ABER... bittebitte :)
Wie kann ich denn nun eine Variable an die Funktion uebergeben?
So sieht nun meine Codezeile aus:
document[hearts[i][1]].onmouseout = hidecouple;
An die function hidecouple() muss ich aber noch ein Variable uebergeben, sonnst bringt mich das leider nicht weiter.
Ein letzter kleiner Finger?
Gruss!
fl0.
Wie kann ich denn nun eine Variable an die Funktion uebergeben?
So sieht nun meine Codezeile aus:document[hearts[i][1]].onmouseout = hidecouple;
An die function hidecouple() muss ich aber noch ein Variable uebergeben, sonnst bringt mich das leider nicht weiter.
Ein letzter kleiner Finger?
Es gibt eine Möglichlikeit:
document[hearts[i][1]].onmouseout = function()
{
hidecouple(var_x);
}
Struppi.