Problem mit Buttons
Timon Vielhaber
- javascript
0 Cheatah0 Benjamin S.0 Patrick0 Klaus Junge
Hallo,
Ich habe ein Problem mit der Funktion onMouseover und OnMouseOut.
Ich habe auf meiner Homepage Buttons mit wechselnden Grafiken. Wenn ich jetzt aber daneben eine Grafik wie "new" oder so setzen will, dann passiert folgendes:
Sobald man einen Button verläßt, erscheint die Grafik, die eigentlich in dem Button erscheinen soll, in dem Platz der "new"-Grafik völlig woanders.
Wenn jemand Hilfe weiß oder näher interressiert an dem Problem ist, kann ich auch die Problemdatei mailen.
Danke im Voraus,
Timon Vielhaber
Hi,
Ich habe ein Problem mit der Funktion onMouseover und OnMouseOut.
Ich habe auf meiner Homepage Buttons mit wechselnden Grafiken.
also Grafiken, nicht Buttons (Formulare)? Das ist ein Riesenunterschied!
Wenn ich jetzt aber daneben eine Grafik wie "new" oder so setzen will, dann passiert folgendes:
Sobald man einen Button verläßt, erscheint die Grafik, die eigentlich in dem Button erscheinen soll, in dem Platz der "new"-Grafik völlig woanders.Wenn jemand Hilfe weiß oder näher interressiert an dem Problem ist, kann ich auch die Problemdatei mailen.
Wie wäre es, wenn Du einfach die URL hier postest, oder evtl. ein paar der betreffenden Zeilen direkt, oder am besten beides? Ich kann mir so Dein Problem jedenfalls schwer vorstellen, und erfahrungsgemäß hilft es kaum, den Code mit der Post zu erhalten.
Cheatah
Hi!
Ich habe ein Problem mit der Funktion onMouseover und OnMouseOut.
Das kenne ich.. :-)
Sobald man einen Button verläßt, erscheint die Grafik, die eigentlich in dem Button erscheinen soll, in dem Platz der "new"-Grafik völlig woanders.
Diese Grafik erscheint bei onmouseover an der richtigen Stelle, aber beim onmouseout nicht? Dafür verbleibt beim onmouseout die onmouseover-Grafik auf der eigentlichen Stelle?
In diesem Script arbeitest du vielleicht mit der Nummernverteilung auf einzelne Grafiken, oder?
Wenn ja überprüfe dochmal bitte, ob die "Nummern" im Script vom onmouseover und onmouseout übereinstimmen. Denn wenn da nicht der Fall ist, passiert daß, was du gerade beschrieben hast.
Ansonsten ziege uns doch mal bitte dieses Script samt HTML-Datei (oder am besten die URL dazu...)
Gruß Benjamin
Hallo Timon!
Ich habe ein Problem mit der Funktion onMouseover und OnMouseOut.
Ich habe auf meiner Homepage Buttons mit wechselnden Grafiken. Wenn ich jetzt aber daneben eine Grafik wie "new" oder so setzen will, dann passiert folgendes:
Sobald man einen Button verläßt, erscheint die Grafik, die eigentlich in dem Button erscheinen soll, in dem Platz der "new"-Grafik völlig woanders.
Du benutzt wahrscheinlich einen Script, in welchem die Grafiken nach "index" und nicht nach "name" angesprochen werden.
Der Browser "liest" die Grafiken in der Reihenfolge ihrer Referenzierung im Quelltext. Die erste Grafik erhält die Index-Nr. 0, die zweite 1, die dritte 2, usw...
Wenn Du mal angenommen 5 Buttons referenziert hast, so haben diese die Index-Nummern 0 bis 4.
Referenzierst Du eine neue, sechste Grafik unterhalb der Buttons, so erhält diese die Index-Nummer 5. Dein Script funktioniert noch...
Plazierst Du die neue Grafik aber oberhalb der Buttons, so erhält die neue Grafik die Index-Nummer 0, und die Buttons die Nummer 1 bis 5: das Script funzt nicht mehr, wenn nicht die Zahlen entsprechend geändert werden.
So wie Du Dein Problem schilderst, wird es so sein, wie es Benjamin erklärt hat. In der für onMouseOut zuständigen Funktion stimmen nach dem Einfügen der neuen Grafik die Index-Zahlen nicht mehr.
Anzeigebeispiel - so sieht es aus<g>:
http://atomic-eggs.com/pac/paf3.htm#A5
Auf dieser Seite siehst Du den einzigen Bildwechsel dieser Page: meine wunderschöne Wenigkeit!
Und jetzt schau mal im Quelltext:
if (ok) {
bild1 = new Image();
bild2 = new Image();
bild1.src = "pacnice.jpg";
bild2.src = "pacnicer.jpg";
}
function Off (num) {
if (ok) {
if (num=="1") document.images[27].src=bild1.src;
}
}
function On (num) {
if (ok) {
if (num=="1") document.images[27].src=bild2.src;
}
"if (ok)" bezieht sich auf eine im Originalquelltext meiner Seite definierten Browserabfrage
für eine Bildwechselfunktion für eine Grafik benötigt man 2 Bilder: bild1 und bild2, die oben definiert werden (die 4 ersten Zeilen). In diesem Beispiel ist Bild1 (pacnice.jpg) der Normalzustand, und Bild2 (pacnicer.jpg) ist das Bild, welches bei onMouseOver erscheinen soll.
die Funktion "OFF" wird bei onMouseOut angesprochen, die Funktion "ON" bein onMouseOver
die Zahl "27" in der Zeile: if (num=="1") document.images[27].src=bild1.src; bei der Funktion Off und der entsprchenden Zeile bei der Funktion On bedeutet, daß die 28. Grafik im Quelltext (angefangen von 0, wie oben erklärt) durch den Bildwechsel ausgetauscht wird.
Würde ich also auf die Idee kommen, oberhalb dieser 28. Grafik ein weiteres Bild einzubauen, müßte ich anstatt "27" nun "28" eingeben, denn alles verschiebt sich dann um eine Zahl, und mein schönes Photo ist nicht mehr die 28. sondern die 29. Grafik auf der Seite. Für die Indexierung ist dann Index 28, da ja, wie gesagt, von "0" an gezählt wird.
Ich hoffe, ich konnte es einigermaßen 'rüberbringen, sonst melde Dich bitte nochmals... aber bitte hier, nicht per E-Mail (anderen Leuten interessiert es vielleicht auch), OK?
Bis danndann
PAF (patrickausfrankfurt)
Hallo Timon,
...Funktion onMouseover und OnMouseOut.
...eine Grafik wie "new" oder so setzen will, ...
mir sind die Zusammenhänge nicht klar, aber den Bezeichner
"new" würde ich vermeiden weil er ein reserviertes Wort ist.
Das kann, muß aber nicht, zu Fehlinterpretationen führen.
Wenn new aber ein neues Array deklariert, sollte es nicht in
den benutzten Zahlenbereich fallen und Deinen Effekt auch
nicht verursachen. Bildwechsel sollte aber auch nicht erfolgen.
Sobald man einen Button verläßt, erscheint die Grafik, ...
... in dem Platz der "new"-Grafik völlig woanders.
So ganz klar ist mir Deine Beschreibung nicht, erinnert mich aber
an einen Effekt den ich schon mal gesehen habe.
Wenn die Seite aufgebaut wird, erscheint das im IMG-Tag definierte
Bild an der richtigen Stelle. Kommt man mit dem Mauszeiger darauf,
oder geht wieder weg, dann erscheint das auszuwechselnde Bild an einem
Ort mit völlig anderen Bildkoordinaten, an einem Ort wo gar kein
Bild definiert ist. Das Bild selbst ist richtig, die Bildkoordinaten
jedoch nicht.
PAFs Erklärung würde ja darauf hinauslaufen, daß das Bild anstelle
eines anderen ausgewechselt würde. Meist verzerrt.
Auch Benjamins Hinweis sollte auf eine Bilder'verwechslung'
hinauslaufen.
Mir ist so, als hätte ich 'meinen' Effekt vorzugsweise mit
älteren Netsies beobachtet und bringe ihn mit unsauber geschriebenen
Tabellen und DIVs in Verbindung. Schau das mal durch.
Wenn ich Dich richtig verstehe, dann liegt das Problem aber
eher im Scriptbereich, evtl. in der Funktion zum Bildwechsel.
Irgendwie veranlaßt Du doch den Browser dazu, falsche oder
garkeine Bildkoordinaten für die Operation zu haben.
Was ist, wenn Du beim Seitenaufbau n Bilder definiert hast,
und nun das n+1te auswechselst. Das sollte vermutlich zwar zu einer
Fehlermeldung führen, aber korrekte Bildkoordinaten kannst Du dafür
auch nicht voraussetzen.
Achso, es gibt da noch mindestens einen Effekt.
Manche Browser haben anscheinend Probleme mit Zeitverzögerungen.
Dieses trifft vor Allem mit Frames auf.
Stell Dir vor Du rufst aus einem Frame den Bildwechsel in einem
anderen Frame auf, und dieser wechselt Dir Dein aufrufendes Frame
aus. Wenn der Browser nun vom Bildwechsel zurückkommt, dann ist da
ein anderes Frame. Im schlimmsten Fall schmiert Dir die Kiste ab.
Browser scheinen so geschrieben zu sein, daß bestimmte Operationen
quasiparallel ablaufen, so nach dem Motto, mach schon mal weiter
mit der nächsten Aktion bevor die erste abgeschlossen ist.
Dieses soll die Gesamtgeschwindigkeit erhöhen.
Beobachten kannst Du das ja beim Seitenaufbau. Der erfolgt schon
sobald etwas da ist (excl. Tabellen), die Bilder werden später
reingemalt. Vorausgesetzt, Du hast die Bildabmessungen mit-
geliefert (NS). Der IE ist sogar bereit den Seitenaufbau
dann irgendwann nachträglich nochmal neu anzupassen.
Tja, und Eines hab' ich hier im Forum auch schon mal gelesen:
es soll nicht unwichtig sein was man mit dem 'return' macht.
Irgendwie beeinflußt man damit die Art und Weise wie der
Browser nach dem Funktionsaufruf wieder weitermacht.
Such mal im Archiv.
Klaus